"우리는 매일 운영체제 기반의 환경을 다루면서, 정작 OS가 시스템 내부에서 무슨 일을 하는지 얼마나 알고 있을까?" 컴퓨터공학과를 다니며 늘 다뤄온 운영체제였지만, 그동안 너무 막연하게만 알고 있었습니다. 추상적인 이해에 머물러 있던 안일함을 깨고, 네트워크와 시스템 전반의 기반이 되는 OS 및 커널의 핵심 원리를 제대로 정리해 보고자 합니다. 운영체제(OS)란? 컴퓨터 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 시스템 소프트웨어 운영체제(OS)의 두 가지 존재 이유 컴퓨터 시스템에서 운영체제가 존재하는 이유는 크게 두 가지로 요약할 수 있습니다. 사용자에게 편의성 제공 (Convenience) 시스템 자원의 효율적 관리 (Efficiency) 막연해 보일 수 있는 이 두 가지 목적이 실제 시스템에서는 어떻게 적용되는지 정리해 보았습니다. 1. 사용자에게 컴퓨터 시스템 사용의 편의성 제공 "하드웨어의 복잡한 제어를 몰라도, 누구나 쉽게 컴퓨터를 쓸 수 있게 한다." 운영체제가 없다면 사용자는 모니터 화면 출력이나 파일 저장 시 하드웨어 제어 명령어를 직접 작성해야 합니다. OS는 이러한 복잡성을 은닉하고 쉬운 인터페이스를 제공합니다. OS가 없을 때: 파일이 SSD의 몇 번 블록/섹터에 들어있는지 물리 주소를 직접 찾아 읽어야 합니다. OS가 있을 때: 파일 탐색기에서 폴더를 클릭하고 드래그 앤 드롭하는 것만으로 파일을 이동할 수 있습니다. 2. 컴퓨터 시스템의 자원을 효율적으로 운영 "한정된 CPU, 메모리, 저장장치를 충돌 없이 최적으로 나누어 준다." 컴퓨터의 자원(CPU, Memory, I/O Device)은 한정되어 있지만 실행하려는 프로세스는 여러 개입니다. OS는 이 자원들이 낭비되거나 충돌하지 않도록 중재자 역할을 합니다. 실제 예시: CPU 스케줄링 (Multi-Tasking) 상황: 코어가 1개인 CPU에서 음악을 들으며 웹 서핑을 하고, 백그라운드 다운로드를 동시 진행할 때 OS의 역할: OS 커널의 스케줄러가 밀리초(ms) 단위 로 CPU 점유 권한을 각 프로세스에 번갈아 할당합니다. 사용자는 여러 프로그램이 동시에 실행되는 것처럼 느끼게 되며, CPU의 휴식 시간도 최소화됩니다. Summary 사용자 관점 (Convenience): 하드웨어를 몰라도 시스템을 쉽게 쓰도록 돕는 인터페이스 및 추상화 제공자 시스템 관점 (Efficiency): 한정된 자원을 공정하고 효율적으로 나누어주는 자원 관리자 (Resource Manager) 커널의 핵심 원리 3가지 1. 메모리 상주와 공간 격리 (Kernel Space vs User Space) 상주성 : 커널은 컴퓨터가 켜져있는 동안 메모리(RAM)의 가장 안전한 전용 구역에 계속 떠서 하드웨어 인터럽트 수신과 CPU 스케줄링을 상시 처리합니다. 이중 모드 : 응용 프로그램이 실행되는 유저 공간과 커널이 위치한 커널 공간을 물리적으로 격리하여, 일반 앱의 오류나 악성 코드가 하드웨어와 전체 시스템을 다운시키지 못하도록 보호합니다. [ 전체 메모리 (예: 32GB) ] ┌────────────────────────────────────────────────────────┐ │ 0x00000000 ~ 0x7FFFFFFF (커널 공간 - Kernel Space) │ ──▶ CPU Ring 0 (커널 모드만 접근 가능) (16GB 램) ├────────────────────────────────────────────────────────┤ │ 0x80000000 ~ 0xFFFFFFFF (유저 공간 - User Space) │ ──▶ CPU Ring 3 (유저 모드 접근 가능) (16GB 램) │ (웹 브라우저, 게임, VS Code 등이 나누어 쓰는 공간) │ └────────────────────────────────────────────────────────┘ 2. 시스템 콜(System Call)을 통한 하드웨어 제어 안전한 통로 : 응용 프로그램이 디스크 읽기/쓰기, 네트워크 패킷 송수신, 메모리 할당 등 하드웨어 자원이 필요할 때, 직접 접근하지 못하고 반드시 커널에 시스템 콜을 요청합니다. 권한 검증 : 커널은 요청한 프로세스의 권한을 검증한 뒤 대신 하드웨어 작업을 수행하고 결과를 반환합니다. 3. 하드웨어 추상화 표준 인터페이스 제공 : 다양한 제조사의 저장장치나 랜카드가 들어오더라도, 커널이 '드라이버와' '파일/소켓 시스템'형태로 단일화된 인터페이스를 제공하므로 사용자와 개발자는 고유의 하드웨어 특성을 몰라도 동일한 명령어로 시스템을 다룰 수 있습니다. Next Step 이번 글에서는 그동안 추상적으로만 알고 있던 운영체제와 커널의 핵심 개념들을 정리해 보았습니다. 다뤄야 할 깊은 내용들이 정말 많지만, '네트워크/시스템 관점에서 최소한 이 정도는 꼭 알아야 한다' 싶은 핵심 원리들을 꾹꾹 눌러 담았습니다. 다음 포스팅에서는 이번에 다진 기본기를 바탕으로 리눅스 서버 구축과 운영 부분을 다뤄보겠습니다.
좋습니다. 지금까지 구성한 B300 ×8 bare-metal acceptance 관점 에서 보면 Stage1과 Stage3a는 역할이 명확히 다릅니다. Stage1 = “GPU 서버 하드웨어 자체를 믿을 수 있는가?” Stage3a = “그 하드웨어 위에서 vLLM inference가 실제 서비스에 사용할 만큼 정상적으로 동작하는가?” 따라서 Stage1을 통과하고 Stage3a에서 문제가 생기면 HW 고장보다는 vLLM 설정, workload 특성, KV cache, concurrency, scheduler, 모델/TP 구성 쪽으로 원인 범위를 크게 좁힐 수 있습니다. 1. 전체 구조부터 보면 B300 × 8 Acceptance │ ┌──────────────────┴──────────────────┐ │ │ Stage1 Stage3a Hardware 검증 vLLM Serving 검증 │ │ ┌─────────┼──────────┐ ┌───────────┼────────────┐ │ │ │ │ │ │ GPU/HBM Stress NVLink/NCCL Basic Mixed Saturation │ │ │ Inference Workload │ │ │ │ │ │ │ ECC/XID 장시간 GPU↔GPU TTFT/ITL 간섭 영향 최대 동시성 온도/전력 안정성 통신 │ │ │ │ │ │ └─────┬─────┘ │ │ │ │ │ │ └─────────┴──────────┘ Prefix Cache ───── KV Tier │ ▼ "HW를 믿어도 되는가?" "서비스 가능한가?" 이 관점으로 각 step을 이해하면 훨씬 쉽습니다. 2. Stage1 — GPU 하드웨어 검증 Stage1의 목적은 단순히 nvidia-smi 에서 GPU 8장이 보이는지를 확인하는 것이 아닙니다. “B300 8장이 장시간 inference 서비스를 받아도 계산 오류, GPU reset, ECC, thermal throttling, GPU 간 통신 이상 없이 안정적으로 동작하는가?” 를 검증하는 단계입니다. Stage1 항목 무엇을 시험하나 목적 실제 운영에서 문제라면 나타나는 현상 GPU 기본 인식 B300 8장, driver/CUDA/Fabric Manager 서버 기본 구성 정상 확인 GPU 누락, Pod GPU 할당 실패 DCGM diagnostics GPU/HBM/PCIe 등 진단 HW 초기 불량 탐지 CUDA error, GPU unhealthy GPU Burn 8 GPU 장시간 고부하 지속 부하 안정성 inference 중 GPU reset/XID FP8 실제 FP8 연산 AI inference precision path 확인 FP8 모델에서 crash/성능 이상 FP4 실제 FP4 연산 가능 여부 B300 저정밀 inference path 확인 FP4 모델/커널 실행 문제 Telemetry clock/temp/power/throttle 열/전력 안정성 시간이 지나며 TPS 하락 ECC/XID GPU 오류 counter HW 오류 탐지 랜덤 inference 실패 Row Remapper HBM defect/remap 메모리 열화 확인 HBM 관련 불안정 NVLink GPU 간 link 8 GPU 연결 상태 확인 TP 모델 성능 저하 NCCL collective 통신 실제 GPU↔GPU 통신 검증 TP2/4/8 성능 저하/timeout Stage1에서 특히 중요한 관계 예를 들어 운영 중 이런 문제가 있다고 합시다. 처음에는 inference가 잘 됨 ↓ 30분 후 TPS 감소 ↓ 간헐적으로 latency spike Stage1 telemetry에서: GPU temperature ↑ GPU clock ↓ thermal throttle = YES 였다면 vLLM 문제가 아니라 냉각/전력/HW 문제 일 가능성이 높습니다. 반대로: GPU Burn 4h PASS DCGM PASS ECC = 0 XID = 0 Throttle = 0 인데 vLLM에서만 문제가 발생한다면 Stage3a 영역을 먼저 의심할 수 있습니다. 3. FP8 / FP4 테스트를 따로 넣은 이유 이번에 개선한 부분이 특히 중요합니다. 기존 FP8 시험은 GPU를 순차적으로 실행해서 실제 GPU당 부하 시간이 짧았고 FP4도 포함되지 않았습니다. 개선한 시험은 개념적으로: GPU0 ─ FP8 ┐ GPU1 ─ FP8 │ GPU2 ─ FP8 │ ... ├── 동시에 지속 부하 GPU7 ─ FP8 ┘ ↓ 동일하게 FP4 입니다. 이것은 실제 inference가 BF16만 사용하는 환경과 달리 FP8/FP4 Tensor Core path가 정상인가 를 확인하기 위한 것입니다. 특히 앞으로: BF16 ↓ FP8 ↓ FP4 quantization을 통해 GPU당 처리량을 높일 계획이라면 중요합니다. 다만 FP4가 환경의 실제 library/kernel에서 지원되지 않으면 BF16으로 몰래 대체해서 PASS시키면 안 되고 UNSUPPORTED/FAIL 로 구분해야 합니다. 4. NVLink/NCCL이 중요한 이유 8개의 B300으로 큰 모델을 TP8로 서비스한다고 생각하면: 하나의 요청 │ ┌─────────┴─────────┐ │ Tensor Parallel 8 │ └─────────┬─────────┘ │ GPU0 ↔ GPU1 ↔ GPU2 ↔ ... ↔ GPU7 NVLink 이 됩니다. 따라서 GPU 자체가 아무리 정상이어도 GPU 간 통신에 문제가 있으면: TP1 정상 TP2 약간 이상 TP4 느림 TP8 매우 느림 같은 현상이 생길 수 있습니다. 그래서 NVLink 상태 확인 → NCCL 실제 collective test → Stage3a TP inference 가 연결됩니다. 5. Stage3a — vLLM 실제 inference 검증 Stage1을 통과한 다음에는 질문이 바뀝니다. “GPU가 정상인가?” 에서 “이 GPU를 vLLM inference 서비스로 실제 사용할 수 있는가?” 가 됩니다. Stage3a는 그래서 단순 benchmark가 아니라 serving behavior qualification 에 가깝습니다. 6. Stage3a 기본 inference 가장 먼저 확인하는 것은 정상적인 request/response입니다. Client │ ▼ vLLM OpenAI API │ ▼ Llama 70B │ ▼ B300 ×8 여기서 기본적으로 확인하는 것이: 요청 성공 여부 TTFT ITL Request throughput Output tokens/sec GPU utilization HBM/KV 상태 입니다. TTFT와 ITL은 의미가 다릅니다. 요청 ─────────────── 첫 token ← TTFT → 첫 token → token → token → token ←ITL→ TTFT 가 나쁘면 사용자는 “답변을 시작하지 않는다”고 느끼고, ITL 이 나쁘면 답변 생성 자체가 끊기거나 느리다고 느낍니다. 7. Short / Long Context 시험 Inference workload는 prompt 길이에 따라 성격이 크게 달라집니다. Short prompt 1K tokens ↓ 상대적으로 가벼운 prefill Long prompt 32K tokens ↓ 큰 prefill ↓ KV cache 소비 증가 ↓ TTFT 증가 실제 서비스에서는 특히 문서 분석/RAG에서 long context가 많이 발생할 수 있으므로 중요합니다. Stage3a에서 short만 빠르다고 실제 서비스가 빠른 것은 아닙니다. 8. Stage3a3 — Mixed Workload 이번에 많이 개선한 시험입니다. 목적은 간단합니다. 긴 요청이 들어올 때 짧은 interactive 요청이 얼마나 피해를 받는가? 예를 들어 실제 서비스에서는: 사용자 A "간단히 요약해줘" │ │ short ▼ vLLM ▲ │ 32K document │ 사용자 B "이 문서 분석해줘" 가 동시에 발생합니다. 우리가 알고 싶은 것은: Short alone TTFT = 45 ms Long request와 같이 실행 Short TTFT = ? 입니다. 9. Stage3a3에서 Crossover를 넣은 이유 기존 시험에서 -80% 같은 이상한 결과가 나왔습니다. 즉: isolated보다 mixed가 훨씬 빠름 이라는 결과였습니다. 이는 workload interference라기보다 warm-up/order effect 가능성이 컸습니다. 그래서 현재는: R0 ISO → MIX discard R1 MIX → ISO retain R2 ISO → MIX retain R3 MIX → ISO retain R4 ISO → MIX retain 으로 바꿨습니다. 그리고 각 round마다: (MIX TTFT - ISO TTFT) --------------------- × 100 ISO TTFT 를 계산합니다. 최종적으로는 단순 평균보다 paired degradation median 을 중요하게 봅니다. 10. Stage3a3의 Stability가 중요한 이유 예를 들어: Round1 -2% Round2 +11% Round3 -1% Round4 +12% 이면 median 하나만 계산해서: 약 +5% 라고 하는 것은 위험합니다. 실제로는 결과 방향이 계속 뒤집히기 때문입니다. 그래서 현재는: paired degradation direction consistency AB degradation BA degradation AB/BA order delta 까지 확인합니다. 결과가 불안정하면: UNSTABLE REVIEW_REQUIRED 로 처리합니다. 이것은 실제 운영에서도 중요합니다. 평균 성능은 좋아도 요청마다 latency가 크게 흔들리는 서비스는 사용자 입장에서는 좋지 않은 서비스 이기 때문입니다. 11. Stage3a6 — Saturation Test 이 시험은 실서비스 capacity planning과 가장 직접적으로 연결되는 시험 중 하나입니다. 질문은: “이 서버가 동시 사용자를 어디까지 정상적으로 감당하는가?” 입니다. 현재 개선된 시험은: C64 ↓ 128 ↓ 192 ↓ 256 ↓ 384 ↓ 512 ↓ 768 ↓ 1024 ↓ 1536 ↓ 2048 까지 필요에 따라 자동 확장합니다. 하지만 중요한 것은 C1024가 실행됐다고 C1024를 서비스할 수 있다는 뜻이 아니라는 점 입니다. 12. Saturation에서 Running / Waiting을 보는 이유 예를 들어 C1024 요청을 넣었는데: Client concurrency = 1024 vLLM ├─ running = 380 └─ waiting = 644 일 수 있습니다. 즉 GPU가 실제로 1024 request를 동시에 처리하는 것이 아닙니다. 그래서: C512 Output TPS = 19,500 Waiting = 100 C768 Output TPS = 19,700 Waiting = 370 C1024 Output TPS = 19,650 Waiting = 620 이면 C768/1024는 capacity 증가가 아니라 queue 증가 입니다. 그래서 개선된 Stage3a6는: SLO_CLIFF THROUGHPUT_PLATEAU QUEUE_SATURATION 을 구분합니다. 실제 LiteLLM 등의 concurrency limit를 정할 때도 maximum executable concurrency 보다 maximum SLO-compliant concurrency 가 훨씬 중요한 값입니다. 13. Stage3a8 — Prefix Cache 이것도 이번에 개선한 핵심 시험입니다. 실제 서비스에서 다음과 같은 요청이 반복된다고 생각하면 됩니다. 32K 공통 문서 + 질문 A 32K 공통 문서 + 질문 B 32K 공통 문서 + 질문 C 공통 32K를 매번 GPU가 다시 prefill하는 것은 낭비입니다. Prefix Cache가 정상이라면: Request #1 32K Prefix ↓ KV 생성 ↓ Cache Request #2 같은 32K Prefix ↓ Cache HIT ↓ prefill 일부 생략 ↓ TTFT 감소 가 됩니다. 14. 기존 Prefix Cache 시험의 한계 기존 결과가: OFF 202.7 ms ON 194.7 ms 약 4% 개선 이었다고 해서 바로 Prefix Cache PASS라고 할 수 없었습니다. 왜냐하면: 정말 cache hit가 발생해서 빨라진 것인가? 아니면 단순 measurement variation인가? 를 구분하지 못했기 때문입니다. 그래서 개선한 Stage3a8은 실제 vLLM counter를 봅니다. vllm:prefix_cache_queries vllm:prefix_cache_hits 시험 전후: queries_before hits_before ↓ requests queries_after hits_after 를 측정해서: hit rate = Δhits -------- × 100 Δqueries 를 계산합니다. 15. Prefix Cache는 Functional과 Performance를 분리 이것도 acceptance에서 중요합니다. 예를 들어: Hit Rate = 80% TTFT 개선 = 4% 라면: Functional PASS Performance LOW / small benefit 입니다. 반대로: TTFT 개선 = 10% Hit count = 0 이면: Functional FAIL 또는 REVIEW_REQUIRED Performance INCONCLUSIVE 입니다. 즉 “기능이 동작한다”와 “성능 효과가 크다”를 같은 PASS로 묶지 않습니다. 16. Stage3a10 — KV Cache Tier Prefix Cache와 KV Tier는 비슷해 보여도 질문이 다릅니다. Prefix Cache는: "이전에 계산한 prefix KV를 재사용할 수 있는가?" 이고 KV Tier는: "GPU HBM에 다 못 두는 KV를 다른 저장 계층으로 내렸다가 효율적으로 복원할 수 있는가?" 입니다. 현재 환경에서는: GPU HBM │ ▼ Local NVMe │ ▼ AIStor / MinIO object TCP/TLS 관점으로 보는 것이 적절합니다. MemKV native TCP는 별도 qualification이고 RDMA MemKV는 현재 환경에서는 N/A입니다. 17. KV Tier가 실서비스에서 중요한 경우 동시 세션이 많아지거나 context가 길어지면: 사용자 증가 ↓ KV 증가 ↓ GPU HBM 압박 ↓ eviction ↓ recompute / restore ↓ TTFT 증가 가 발생할 수 있습니다. 따라서 Stage3a10은 단순 storage benchmark가 아니라 KV pressure가 실제 inference latency/capacity에 미치는 영향 을 보는 시험입니다. 18. Stage1 ↔ Stage3a를 연결하면 장애 원인 분석이 쉬워집니다 실제 운영 장애를 아래처럼 매핑할 수 있습니다. 실제 증상 먼저 볼 시험/지표 의심 영역 GPU가 간헐적으로 죽음 Stage1 Burn/ECC/XID HW/driver 장시간 후 성능 저하 Stage1 telemetry 온도/전력/throttle TP8만 유독 느림 Stage1 NVLink/NCCL GPU interconnect FP8 모델만 이상 Stage1 FP8 precision/kernel FP4 모델만 실패 Stage1 FP4 FP4 SW/kernel/HW path 첫 token이 느림 Stage3a TTFT prefill/scheduler/KV 생성 속도가 느림 Stage3a ITL decode/GPU scheduling 긴 문서만 느림 Long-context test prefill/KV pressure 긴 요청이 들어오면 chat 느림 Stage3a3 mixed workload interference 사용자 증가 시 latency 폭증 Stage3a6 saturation/queue C768 이후 TPS 그대로 Stage3a6 throughput plateau waiting만 계속 증가 Stage3a6 scheduler/queue saturation 반복 문서인데 TTFT 안 줄음 Stage3a8 prefix cache prefix hit=0 Stage3a8 prefix mismatch/cache config context 많을 때 HBM 부족 Stage3a10 KV capacity NVMe KV는 좋은데 remote가 느림 Stage3a10/Stage2c storage/network 19. Acceptance 관점에서는 이렇게 이해하면 가장 쉽습니다 Stage1은 다음 질문에 답합니다. 1 GPU 8장이 모두 정상인가? 2 HBM이 정상인가? 3 장시간 부하를 견디는가? 4 FP8/FP4 계산 path가 정상인가? 5 열/전력 문제가 없는가? 6 NVLink/NCCL이 정상인가? ↓ Hardware PASS? Stage3a는 그 다음 질문입니다. 1 inference가 정상 동작하는가? 2 TTFT/ITL은 정상인가? 3 long context도 처리되는가? 4 short + long이 섞여도 안정적인가? 5 concurrency를 어디까지 올릴 수 있는가? 6 prefix cache가 실제 hit하는가? 7 KV pressure/tiering이 정상인가? ↓ Serving PASS? 그리고 그 다음 Stage7에서 비로소: GLM-5.3 Qwen3.6 gpt-oss DeepSeek PaddleOCR Docling ... 실제 운영 모델을 올려 “우리 서비스 workload에서 얼마만큼의 capacity가 나오는가?” 를 검증합니다. 즉 전체 흐름은: Stage1 "HW 정상?" │ ▼ Stage2 "Network / NVMe / Storage 정상?" │ ▼ Stage3a "vLLM serving 정상?" │ ▼ Stage6 "Kubernetes 위에서도 동일하게 정상?" │ ▼ Stage7 "실제 운영 모델/워크로드 capacity는?" │ ▼ Production Profile TP / concurrency / quota / replica / SLO 라고 이해하면 됩니다. 특히 Stage1은 HW 불량을 걸러내는 시험, Stage3a는 serving engine의 병목과 한계를 찾는 시험 이라는 구분이 가장 중요합니다. Stage3a에서 숫자가 높게 나오는 것 자체보다, 왜 느려지는지 , 어디서 saturation되는지 , 결과가 반복 가능한지 까지 밝혀내는 것이 실제 운영 장애 예방에 더 큰 가치가 있습니다. ===
네. 지금까지의 acceptance 흐름에서 Stage7은 Stage1/Stage6와 목적이 완전히 다릅니다. Stage1: B300 HW 자체를 신뢰할 수 있는가? Stage3a: bare-metal vLLM의 serving 특성은 어떤가? Stage6: Kubernetes로 옮겨도 GPU/NCCL/network/vLLM 특성이 유지되는가? Stage7: 실제로 사용할 각 모델을 B300 환경에서 어떤 설정으로 운영해야 가장 효율적인가? 따라서 Stage7의 최종 산출물은 단순 PASS/FAIL이 아니라 모델별 Production Profile 이어야 합니다. 1. Stage7의 최종 목표 예를 들어 최종적으로 이런 표를 만드는 단계라고 보면 됩니다. Model Precision TP max-model-len max-num-seqs gpu-mem-util Prefix Concurrency Replica SLO GLM-5.3 FP8 8 ... ... ... ON ... 1 ... Qwen3.6-35B-A3B FP8 2 ... ... ... ON ... 2 ... gpt-oss-20b ... 1 ... ... ... ... ... ... ... DeepSeek-V4.1-Flash ... ... ... ... ... ... ... ... ... PaddleOCR-VL-1.6 ... ... ... ... ... ... ... ... ... 여기에 단순 vLLM parameter만 있는 것이 아니라: GPU / replica TP precision / quantization max-model-len max-num-seqs gpu-memory-utilization chunked prefill prefix cache KV strategy concurrency limit RPM / TPM TTFT / ITL SLO Output TPS local model cache requirement startup time 까지 포함하는 것이 좋습니다. 그리고 이 결과가 나중에: Stage7 │ ├── vLLM Deployment values ├── InferencePool/EPP ├── LiteLLM model config ├── LiteLLM RPM/TPM/concurrency quota └── capacity / replica planning 으로 연결됩니다. 2. Stage7 실행 전 필수 전제조건 Stage7은 Stage6가 끝나지 않은 상태에서 시작하지 않는 것 을 권합니다. 최소 Gate는: Stage1 PASS ↓ Stage3a baseline 확보 ↓ Stage6 preflight PASS ├ GPU Operator ├ GPU 1/8 smoke ├ topology └ DCGM ↓ Stage6c PASS ↓ Stage6a NCCL PASS ↓ Stage6b Network PASS ↓ Stage6e AIStor PASS ↓ Stage6k basic/mixed/saturation PASS ↓ Stage7 입니다. 6h/6i 같은 NetworkPolicy/Hubble은 production readiness 측면에서는 필요하지만, 모델 parameter 탐색 자체를 시작하기 위한 hard prerequisite까지는 아닙니다. 6f resilience 역시 Stage7 전에 할 필요 없습니다. 3. 가장 중요한 전제: 모델을 고정해야 함 Stage7에서는 단순히: GLM-5.3 만 기록하면 부족합니다. 반드시: model repository revision / commit weight format quantization tokenizer revision vLLM version CUDA driver container image digest 를 고정해야 합니다. 예: model: name: GLM-5.3 repository: ... revision: ... tokenizer_revision: ... runtime: vllm: 0.30.0 image: ... image_digest: sha256:... precision: dtype: ... quantization: ... Stage7 도중 모델 revision이나 container가 바뀌면 이전 결과와 이후 결과를 같은 dataset으로 취급하면 안 됩니다. 4. 모델 파일은 먼저 local NVMe에 준비 Stage7 benchmark 중 모델 다운로드 시간을 섞지 않는 것이 중요합니다. 권장 구조는: AIStor / MinIO │ │ source of truth ▼ B300 local NVMe /mnt/local-nvme-cache/models/ │ ├ GLM-5.3/ ├ Qwen3.6-35B-A3B/ ├ gpt-oss-20b/ ├ DeepSeek-V4.1-Flash/ └ ... │ ▼ vLLM Pod 입니다. Stage7 performance test에서는 기본적으로 warm local model cache 를 사용합니다. AIStor → NVMe cold model load 성능은 별도 storage/startup test로 분리하는 편이 좋습니다. 5. 모델별 실제 workload를 먼저 정의 Stage7에서 가장 흔히 생기는 문제가 모든 모델에: input=1024 output=512 concurrency=64 를 똑같이 넣고 성능을 비교하는 것입니다. 그렇게 하면 실제 production capacity와 상당히 다른 결과가 나올 수 있습니다. 현재 계획을 기준으로 모델군을 최소한: 1 Ontology / Reasoning GLM-5.3 Qwen3.6-35B-A3B gpt-oss-20b 2 Online discovery DeepSeek-V4.1-Flash GLM-5.3-Flash 3 Document / Vision PaddleOCR-VL-1.6 docling-layout-heron docling-models DocumentFigureClassifier 로 나누는 것이 좋습니다. 그리고 각각에 production workload profile 을 만들어야 합니다. 예를 들어 LLM이면: interactive-short input P50/P95 output P50/P95 long-context input P50/P95 output P50/P95 mixed short : long 비율 prefix-reuse 예상 shared prefix 길이 예상 reuse ratio 를 정의합니다. Document/VLM 계열은 token benchmark와 별개로: pages/document image resolution PDF size pages/sec documents/sec batch size GPU memory end-to-end latency 가 중요합니다. 즉 Stage7 LLM test와 Document/VLM test harness는 같으면 안 됩니다. 6. Stage7에서 처음부터 모든 parameter 조합을 brute-force하지 않음 예를 들어: TP 1/2/4/8 precision BF16/FP8/FP4 concurrency 1~2048 max-num-seqs 여러 값 gpu-mem-util 여러 값 context 여러 값 을 Cartesian product로 돌리면 시험량이 폭발합니다. 대신 coarse → fine 탐색이 좋습니다. Model qualification ↓ Precision ↓ TP ↓ Memory parameters ↓ Concurrency ↓ Workload ↓ Feature ↓ Soak 순으로 후보를 계속 줄입니다. 7. Stage7-1 — 모델 Functional Qualification 가장 먼저 각 모델이 현재 runtime에서 제대로 뜨는지 확인합니다. Model load ↓ Ready ↓ single request ↓ short input ↓ long input ↓ expected output ↓ no CUDA error ↓ no XID/ECC 이 단계에서는 성능 최적화를 하지 않습니다. 목표는: 이 모델/version이 현재 vLLM/B300 환경에서 정상적으로 실행 가능한가? 입니다. 실패하는 모델은 parameter search 대상에서 제외합니다. 8. Stage7-2 — Precision 결정 그다음 모델별 precision 후보를 찾습니다. 예: BF16 ↓ FP8 ↓ FP4 (지원되는 모델/runtime일 경우) 비교할 것은 단순 TPS만이 아닙니다. model load success HBM TTFT ITL Output TPS quality error kernel/runtime stability 를 같이 봅니다. 예를 들어: BF16 HBM 150GB TPS 1.0x quality baseline FP8 HBM 90GB TPS 1.5x quality acceptable FP4 HBM 55GB TPS 1.9x quality degradation 이라면 production 후보는 FP8이 될 수 있습니다. Stage7에서는 quality gate가 반드시 필요합니다. Stage1 FP8/FP4는 hardware/kernel sanity였고, Stage7 FP8/FP4는 해당 모델의 품질 + 성능 선택 문제 입니다. 9. Stage7-3 — 최소 TP 탐색 그다음 가장 중요한 parameter가 TP입니다. 가능하면: TP1 ↓ TP2 ↓ TP4 ↓ TP8 순서로 모델이 들어가는 최소 TP 부터 시작합니다. 목표는 무조건 TP8이 아닙니다. 예를 들어: Qwen model TP1 OOM ↓ TP2 PASS ↓ TP4 PASS ↓ TP8 PASS 라면 TP2/4/8을 비교합니다. 왜냐하면: TP8 × replica 1 보다: TP2 × replica 4 가 production aggregate throughput에서 훨씬 유리할 수도 있기 때문입니다. 따라서 Stage7에서는: 가장 빠른 TP 보다 SLO를 만족하면서 GPU당 throughput이 가장 좋은 TP 를 찾는 것이 중요합니다. 10. TP 평가 metric TP마다 최소: TTFT P50/P95/P99 ITL P50/P95/P99 Output TPS Request/s HBM/GPU GPU util power NCCL traffic 을 기록합니다. 그리고: Output TPS / GPU 도 계산하세요. 예: TP2 = 1,000 tok/s → 500 tok/s/GPU TP4 = 1,600 tok/s → 400 tok/s/GPU TP8 = 2,200 tok/s → 275 tok/s/GPU 라면 TP8이 절대 TPS는 가장 높지만 cluster capacity 관점에서는 TP2가 더 효율적 일 수 있습니다. 11. Stage7-4 — Memory/runtime parameter 탐색 Precision과 TP 후보가 정해지면: gpu-memory-utilization max-model-len max-num-seqs chunked-prefill 등을 조정합니다. 예를 들어: gpu-memory-utilization 0.80 ↓ 0.85 ↓ 0.90 ↓ 0.92 ↓ 0.95 처럼 탐색할 수 있습니다. 목표는 0.95를 쓰는 것이 아니라: 충분한 KV capacity + OOM safety margin + stable latency 사이의 적정점을 찾는 것입니다. Production에서는 acceptance benchmark 최대값보다 약간의 여유를 두는 것이 좋습니다. 12. Stage7-5 — Saturation search 여기서 Stage3a6/Stage6k saturation 방법을 그대로 재사용하면 됩니다. 예: C1 C2 C4 C8 C16 C32 C64 C128 ... 또는 모델 특성에 맞는 범위로 시작합니다. 관찰: TTFT ITL Output TPS request/s vllm:num_requests_running vllm:num_requests_waiting vllm:kv_cache_usage_perc GPU util HBM 그리고: Throughput │ │ ______ │ / │ / │ / │_______/____________ Concurrency ↑ knee point 을 찾습니다. 13. 최대 concurrency와 production concurrency를 구분 Stage7에서 매우 중요합니다. 예를 들어: C256 TPS 1000 TTFT P99 2.5s C384 TPS 1250 TTFT P99 4.0s C512 TPS 1300 TTFT P99 8.5s C768 TPS 1310 TTFT P99 20s 라면 실행 가능한 최대치는 C768일 수 있지만 production 설정은 C384 정도가 될 수 있습니다. 즉: max executable concurrency ≠ production concurrency 입니다. Stage7 결과에는 둘을 별도로 기록하세요. 14. Stage7-6 — 실제 workload mix 이제 synthetic saturation에서 끝내지 않고 실제 traffic 형태를 넣습니다. 예: short interactive 60% medium 25% long context 10% very-long 5% 같은 분포입니다. Stage3a3에서 만든 balanced crossover 방식도 여기서 매우 유용합니다. 특히: long request가 들어왔을 때 short request TTFT가 얼마나 악화되는가? 를 모델별로 확인합니다. 15. Stage7-7 — Prefix Cache 실제 서비스에서 system prompt, ontology, agent context 등이 반복된다면 매우 중요합니다. Stage6k-prefix와 동일하게: Cold ↓ same exact prefix ↓ Warm 을 테스트합니다. 그리고: prefix_cache_queries prefix_cache_hits cold TTFT warm TTFT hit rate 를 측정합니다. 단순히: --enable-prefix-caching 을 켜면 빠를 것이라고 가정하면 안 됩니다. 실제 workload의 prefix reuse가 낮으면 오히려 production sizing에서 중요한 feature가 아닐 수도 있습니다. 16. Stage7-8 — KV tier KV offload가 필요한 모델만 수행합니다. 우선순위는 현재 환경에서는: HBM ↓ local NVMe ↓ remote tier 입니다. 비교: none local_nvme remote_object memkv_tcp 다만 AIStor/MinIO remote_object 와 native MemKV TCP 는 계속 별개의 tier로 유지합니다. 측정: TTFT ITL TPS KV hit restore latency restore bandwidth network traffic 그리고 remote tier가 실제 이득이 없으면 굳이 production architecture에 넣지 않습니다. 17. Stage7-9 — Soak 최종 후보 설정만 장시간 테스트합니다. 모든 조합을 soak할 필요 없습니다. 예: GLM candidate #1 Qwen candidate #1 gpt-oss candidate #1 ... 만 대상으로: 2h / 4h / 필요 시 8h 운영합니다. 관찰: TTFT drift ITL drift TPS drift GPU temp clock power HBM ECC XID Pod restart OOM request error 첫 5~10분은 measurement에서 제외합니다. 18. 최종적으로 replica 계산 예를 들어 Stage7 결과가: Qwen TP2 production concurrency = 64 output TPS = 500 SLO PASS 라면 B300 8 GPU node에서: GPU0-1 replica A GPU2-3 replica B GPU4-5 replica C GPU6-7 replica D 즉: TP2 × 4 replicas 를 후보로 계산할 수 있습니다. 반면 GLM이 TP8을 요구한다면: GPU0~7 ↓ GLM replica 1 이 됩니다. 그래서 Stage7 결과가 바로 주간 모델 배치 / 야간 모델 전환 설계 로 연결됩니다. 19. LiteLLM 설정까지 연결 예를 들어 Stage7에서 Qwen의 production-safe concurrency가 64라고 나왔다고 합시다. 그러면 LiteLLM/Gateway에서 무작정 200 request를 backend에 보내는 것이 아니라: Users ↓ LiteLLM ├─ auth ├─ team quota ├─ RPM ├─ TPM └─ concurrency admission ↓ Inference Gateway / EPP ↓ Qwen replicas ↓ vLLM 처럼 Stage7 capacity를 admission control에 반영합니다. 즉 Stage7은 benchmark 보고서를 만드는 단계라기보다 production control-plane parameter를 만드는 단계 입니다. 20. Document 모델은 별도 Track 권장 PaddleOCR/Docling 계열을 LLM과 같은 Stage7 script에 억지로 넣지 않는 것을 권합니다. 예를 들어: Stage7-LLM ├ precision ├ TP ├ context ├ concurrency ├ prefix └ KV Stage7-Document ├ image resolution ├ pages/document ├ batch size ├ GPU concurrency ├ pages/sec ├ document latency ├ HBM └ CPU preprocessing 으로 분리합니다. Document pipeline에서는 GPU보다: PDF decode ↓ CPU preprocessing ↓ image transfer ↓ GPU inference ↓ postprocessing 중 CPU preprocessing이 병목일 수도 있기 때문입니다. 21. 실제 수행 절차 제가 현재 환경에서 실행한다면 다음 순서로 합니다. Stage6 Gate │ ▼ ┌────────────────────┐ │ Stage7-0 │ │ Model Inventory │ │ revision/image 고정│ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-1 │ │ Functional │ │ Qualification │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-2 │ │ Precision Search │ │ BF16/FP8/FP4 │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-3 │ │ TP Search │ │ 1 → 2 → 4 → 8 │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-4 │ │ Memory / Runtime │ │ Parameter Search │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-5 │ │ Saturation Search │ │ production C 찾기 │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-6 │ │ Real Workload Mix │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-7 │ │ Prefix Cache │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-8 │ │ KV Tier(optional) │ └─────────┬──────────┘ ▼ ┌────────────────────┐ │ Stage7-9 │ │ Soak │ └─────────┬──────────┘ ▼ Production Profile 핵심은 앞 단계에서 후보를 줄이고 다음 단계로 넘기는 것 입니다. 예를 들어 precision에서 BF16보다 FP8이 품질 기준을 만족하면서 명확히 우수하면 이후 TP/concurrency search는 FP8 중심으로 진행해서 시험량을 줄입니다. Stage7을 시작하기 전에 지금 준비해야 할 것 현재 상황에서는 Stage6 완료와 별개로 Stage7용으로 1 실제 사용할 모델의 정확한 repo/revision, 2 각 모델의
미국과 중국 기업들이 주도해 온 AI 시장에 유럽의 Mistral AI가 1조 개 매개변수 규모의 프론티어 오픈 웨이트 모델을 들고 나오며 강력한 주권 AI 경쟁을 선언했습니다. 이와 동시에 OpenAI는 미공개 프론티어 모델 기반의 고차원 수학 연구 성과를 대거 발표하고, Anthropic과 Google은 보안 전문가용 가드레일 완화 모델, 온디바이스 멀티모달 임베딩, 서브에이전트 추론 제어 등 실무 현장에 직결되는 세부 에이전트 통제 기술들을 잇달아 선보였습니다. Mistral is BACK! (Le Chonk) 유럽 AI의 자존심인 Mistral AI가 총 1조 개(1T)의 매개변수를 갖춘 네이티브 멀티모달 오픈 웨이트 모델 Mistral Large 4 (프로젝트명 Le Chonk )의 프리뷰 버전을 공개했습니다. 이번 발표는 미국 폐쇄형 AI 기업과 중국계 오픈소스 모델이 주도하던 글로벌 판도에서 유럽이 자체적인 파운데이션 모델 주권을 확보했다는 점에서 큰 의미를 갖습니다. 아키텍처 및 인프라 Mistral Large 4는 총 1조 개의 매개변수로 구성되어 있으나, 추론 시 작업에 필요한 전문가 레이어만 호출하는 MoE(Mixture of Experts) 구조를 채택했습니다. 이를 통해 실제 작동 시 소비되는 활성 매개변수(Active Parameters)는 490억 개(49B) 수준으로 유지됩니다. 특히 이 모델은 중국계 오픈소스 라이브러리를 파인튜닝한 것이 아니라, 유럽 내부 데이터센터에 구축된 NVIDIA Grace Blackwell GPU 3,800대 환경에서 바닥부터(From scratch) 자체 학습되었습니다. 모델의 가중치(Weights)는 10월 말에 정식 공개될 예정입니다. 가격 및 성능 평가 Mistral Large 4는 상용 API 시장에서 프론티어급 성능 대비 압도적인 가격 경쟁력을 제공합니다. 구분 가격 (100만 토큰당) 입력 토큰 (Input) $1.36 출력 토큰 (Output) $4.18 보안 및 법률 관련 벤치마크에서 매우 뛰어난 성과를 거두었습니다. 특히 사이버 보안 평가 지표인 CyberGym 벤치마크에서 82점 을 기록하며 기존 오픈소스 모델들을 제치고 1위를 차지했습니다. 에이전트 환경 연동 실습 및 한계점 실제 코딩 도구인 OpenCode 에 연동하여 루빅스 큐브 시뮬레이션을 생성하는 실습을 진행한 결과, 성능적 잠재력과 함께 몇 가지 개선 과제가 확인되었습니다. 생각 토큰(Thinking Tokens) 과다 생성 : 추론 과정에서 너무 많은 생각 토큰을 소비하여 전체 응답 속도가 느려지는 현상이 발생했습니다. 컨텍스트 윈도우 한계 : 복잡한 에이전트 루프 실행 중 컨텍스트 한계에 빠르게 도달하는 등 최적화 측면에서 개선이 필요한 면모를 보였습니다. GPT-7 'Bel' First Preview, Mythos 5.1 Access, Mistral Large 4, Claude Code Update, & More! AI NEWS 글로벌 주요 AI 기업들이 프론티어 연구, 보안, 멀티모달, 에이전트 생태계 전반에서 일제히 신규 모델과 기능 업데이트를 내놓았습니다. 1. OpenAI: 미공개 모델('Bel') 수학 연구 성과 및 서비스 업데이트 OpenAI는 코드명 'Bel' 로 알려진 미공개 프론티어 모델을 활용해 수행한 고차원 수학 연구 결과를 전격 발표했습니다. 수학 연구 원고 대량 공개 : 약 4,000개의 고난도 수학 연구 문제를 테스트하여 372개 결과군에 달하는 722편의 AI 생성 원고 를 공개했습니다. 성공적인 연구 결과들은 평균 약 3시간 분량의 ChatGPT Pro급 추론 연산을 사용했으며, 일부 결과는 형식 검증 도구인 Lean 을 통해 정밀 검증을 거쳤습니다. Auto-Review 무료화 : 백그라운드 에이전트가 실행되는 동안 고위험 작업을 실시간 모니터링하는 보조 에이전트 기능인 Auto-review 를 사용자 사용량 차감 없이 무료로 제공합니다. API 요금제 간소화 및 신규 도구 : 유료 티어를 Build , Launch , Grow 3단계로 단순화했습니다. 최고 티어 진입 기준을 기존 누적 지출 1,000달러에서 500달러 로 낮추어 접근성을 높였습니다. 회의 요약을 전담하는 Meetings 플러그인과 실시간 의사결정 시 최적의 모델 선택을 지원하는 Decisions API 도 함께 공개했습니다. 2. Mistral AI: Mistral Large 4 (Le Chonk) 추가 동향 Mistral Large 4는 1조 파라미터 MoE 아키텍처 기반으로 유럽 자체 클라우드 인프라 배포를 완벽히 지원합니다. 사이버 보안 및 CTF 특화 : 사이버 보안 벤치마크뿐만 아니라 CTF(Capture The Flag) 챌린지, 악성코드 역공학(Reverse Engineering) 분석 등 엔터프라이즈 보안 영역에서 독보적인 성능을 보입니다. 프로모션 가격 : OpenRouter 기준으로 입력 1M 토큰당 $0.68 , 출력 1M 토큰당 $2.09 의 출시 프로모션가로 제공되고 있습니다. 다만 추론 활성화 옵션을 켤 경우 응답 지연(Latency)이 다소 길어지는 특성이 존재합니다. 3. Google: 신규 비주얼 편집 및 온디바이스 멀티모달 임베딩 모델 Google은 이미지 편집과 로컬 멀티모달 검색을 지원하는 신규 경량 모델 2종을 출시했습니다. Nano Banana 2.1 : 비주얼 디자인, 마스크 기반 국소 이미지 편집, 피사체 일관성(Subject consistency) 유지 기능이 대폭 강화된 경량 생성·편집 모델입니다. EmbeddingGemma 2 : 740M(7억 4천만) 파라미터 규모의 온디바이스용 네이티브 멀티모달 오픈 임베딩 모델입니다. Apache 2.0 라이선스로 제공되며, 텍스트, 코드, 이미지, 오디오, 비디오를 단일 Vector 공간에서 통합 임베딩할 수 있어 로컬 환경의 멀티모달 RAG(검색 증강 생성) 구축에 최적화되어 있습니다. 4. Anthropic: 보안 전문가 전용 모델 개방 및 개발자 기능 강화 Anthropic은 통제된 환경에서의 보안 연구 지원과 개발 생산성 향상을 위한 업데이트를 단행했습니다. Claude Mythos 5.1 제한적 접근 (Cyber Verification Program) : 사이버 보안 연구 및 레드팀(Red Team) 목적의 검증된 전문가를 대상으로 안전 가드레일을 대폭 완화한 Claude Mythos 5.1 의 전용 신청 프로그램 시스템을 오픈했습니다. Google Workspace 연동 : Google Docs, Sheets, Slides의 사이드바에 Claude가 직접 통합되어, 사용자가 작성 중인 문서를 실시간으로 확인하고 수정 제안을 승인할 수 있습니다. Claude Code 서브에이전트 제어 (v2.1.292+) : 서브에이전트별로 추론 노력 수치( Effort level )를 개별 지정할 수 있는 기능이 추가되었습니다. 작업 난이도에 따라 추론 깊이를 조절함으로써 불필요한 토큰 비용 소모를 줄이고 효율성을 높였습니다. 5. 오픈소스 및 생태계 도구 Rust 기반 Adobe 대체 프로젝트 (ArtCraft) : Claude Opus를 활용하여 Photoshop을 비롯한 7종의 Adobe 주요 그래픽 소프트웨어를 Rust 언어 기반 오픈소스(PhotoCraft 등)로 재구현하는 프로젝트가 진행 중입니다. Zapier SDK (베타) : Claude Code, Cursor 등 최신 코딩 에이전트가 단일 인터페이스를 통해 9,000개 이상 의 앱 액션(Action)을 직접 실행할 수 있도록 돕는 신규 SDK가 베일을 벗었습니다. 정리 이번 동향은 프론티어 AI 개발이 단순히 단순 텍스트 성능 경쟁을 넘어 자체 인프라 기반의 주권 확보(Mistral) , 고난도 전문 분야 학술 탐구(OpenAI 수학 연구) , 특수 영역 가드레일 완화(Anthropic Mythos 5.1) 로 세분화되고 있음을 보여줍니다. 기술 인프라 측면에서는 EmbeddingGemma 2 를 통한 온디바이스 단에서 멀티모달 RAG 구축 환경이 열렸으며, 개발자 생태계 측면에서는 Zapier SDK 연동 및 Claude Code의 서브에이전트별 추론 수치(Effort level) 제어 기능을 통해 에이전트의 수행 능력과 비용 효율을 실질적으로 통제하는 단계로 진화하고 있습니다. 다룬 영상 Mistral is BACK! (Le Chonk) — Matthew Berman · 21분 GPT-7 'Bel' First Preview, Mythos 5.1 Access, Mistral Large 4, Claude Code Update, & More! AI NEWS — WorldofAI · 25분
챗GPT와 같은 일반적인 대화형 AI에 "이번 주 나스닥에서 어떤 주식을 사야 하는가?" 또는 "이번 주 미식축구 경기에서 누가 이기는가?"라고 물으면 그럴듯하지만 근거가 빈약한 직관적 답변(Vibes)만 돌아옵니다. 금융 시장이나 예측 시장에서 지속적인 수익을 내려면 단순 승패나 주가 향방을 찍는 것이 아니라, 시장 가격에 수수료가 얼마나 붙어 있는지 계산하고 그 가격이 잘못 매겨졌는지를 정량적으로 판별해야 합니다. Claude Code 와 같은 대형 언어 모델(LLM) 코딩 에이전트를 활용하면 시장 수수료를 제거한 공정 가격을 산출하고, 2% 이상의 기대가치(Edge)와 분수 켈리 베팅 기준을 충족할 때만 진입하는 엄격한 퀀트 예측 워크플로를 구축할 수 있습니다. Start Using AI Predictions To Beat The Market Today (beginner's guide) 챗봇의 직관을 배제하는 5단계 퀀트 베팅 프레임워크 일반적인 챗봇은 단편적인 승자 예측만 제시할 뿐 구체적인 진입 가격이나 리스크 관리 계획을 제공하지 못합니다. 반면 정량적 예측 시스템은 2013년 이후의 방대한 NFL 플레이 데이터(총 453,057건의 플레이 기록)를 수집 및 정제하고, EPA(Expected Points Added, 기대 득점 기여도) 지표를 기반으로 팀별 파워 랭킹을 매겨 자체적인 승률 모델을 생성합니다. 이 프레임워크의 핵심 메커니즘은 가격을 예측 확률로 해석하는 것입니다. 미국 합법 예측 시장 플랫폼인 Kalshi 에서 시애틀 시호크스(SEA)의 계약 가격이 59센트라면 시장이 책정한 승률은 59%입니다. 그러나 스포츠북과 거래소는 마진(수수료, Vig )을 책정하므로 양 팀 확률의 합은 100%를 초과하여 보통 102.96%에서 103% 수준에 달합니다. 이 수수료를 수학적으로 제거( Strip the Vig )해야 실제 시장의 무마진 공정 승률(No-vig Fair Price, 예: 시애틀 59.2%)을 얻을 수 있습니다. 시스템을 운영하는 5단계 원칙은 다음과 같습니다. 단계 명칭 수행 내용 1단계 가격 확인 (Read the Price) 플랫폼의 호가를 확인합니다. 2단계 수수료 제거 (Strip the Vig) 시장 마진을 제외한 무마진 공정 가격(No-vig Fair Price)을 구합니다. 3단계 자체 모델 구축 및 채점 (Grade Every Play) EPA 기반 머신러닝 모델로 자체 기대 승률을 산출합니다. 4단계 시장 비교 및 백테스트 (Test vs the Market) 과거 데이터로 시장 브리어 점수(Brier Score)와 비교 검증합니다. 5단계 실행 또는 패스 (Decide) 확실한 기대가치 우위가 없으면 진입하지 않고 패스(Pass)합니다. Claude Code와 Opus 3.5 기반 자동화 파이프라인 구축 실제 파이프라인 구현은 Anthropic의 CLI 코딩 에이전트 도구인 Claude Code (v2.1.291) 환경에서 Claude Opus 3.5 (high effort) 모델을 백엔드 추론 엔진이자 오케스트레이터로 사용해 진행합니다. 사용자는 베팅 및 투자 전 감정적 진입을 막기 위해 시작 자본금($1,000), 수수료 차감 후 최소 진입 우위 마진(Net Edge 2% 이상), 베팅 사이즈 규칙(1/4 켈리 공식)을 시스템 제약 규칙으로 사전에 정의해 둡니다. [프롬프트 규칙 및 켈리 베팅 공식] - Bankroll: $1,000 - Minimum Edge: >= 2% (수수료 차감 후) - Kelly Formula: f* = (p - c) / (1 - c) (p = 자체 추정 승률, c = 시장 진입 가격) - Final Sizing: 1/4 * f* 규칙이 고정되면 Claude Code에 외부 무료 데이터 소스를 수집하도록 지시합니다. 사용되는 데이터셋은 2013년 이후 NFL 경기 상세 플레이 단위 데이터를 제공하는 오픈소스 데이터셋 nflverse , NFL.com 의 부상자 명단 리포트, 그리고 경기장 위치의 기온, 풍속, 강수 확률을 수집하기 위한 무료 날씨 API인 Open-Meteo 입니다. 에이전트는 Python 가상환경을 스스로 생성하고 필요한 패키지( pandas , scipy , scikit-learn 등)를 자동 설치합니다. 이후 45만 개 이상의 행을 파싱하여 데이터 전처리, 정규화, 로지스틱 회귀 및 하이퍼파라미터 그리드 서치 튜닝을 수행합니다. 약 17분간의 연산을 거쳐 모델은 시애틀의 자체 승률을 63.6%, 시장 혼합 승률을 59.4%로 도출해 냅니다. 시장 역검증과 아티팩트 기반 진입 판정 자체 구축한 모델의 확률이 시장 가격보다 높게 나왔다고 해서 무조건 베팅을 실행하는 것은 위험합니다. 과거 2014년부터 2024년까지의 3,346경기를 백테스트하여 예측 정확도를 측정하는 브리어 점수(Brier Score) 를 비교해 보면 시장의 강력함이 드러납니다. 브리어 점수는 0에 가까울수록 정확한 모델임을 의미합니다. 동전 던지기 (무작위 예측): 0.247 자체 EPA 머신러닝 모델: 0.224 시장 마감 배당률 (Sharp 해외 스포츠북 Pinnacle 등 반영): 0.212 백테스트 결과 시장의 집단지성이 자체 정량 머신러닝 모델보다 훨씬 더 정확합니다. 따라서 모델과 시장 가격 간에 괴리가 발생했을 때는 모델에 LLM 자가 반박( Devil's Advocate ) 질의를 수행해야 합니다. "시장이 맞고 내 모델이 틀린 이유는 무엇인가?"라는 프롬프트를 실행하면, 시장은 오프시즌 로스터 교체, 쿼터백 이외 주전 수비수(닉 보사 등)의 부상, 연습 경기 폼 등 플레이 데이터에 즉각 반영되지 않는 비정형 뉴스를 실시간으로 반영하고 있음을 분석해 줍니다. 최종 산출된 HTML 대시보드 리포트는 엄격한 리스크 관리 출력을 제공합니다. 시장 현재가(테이커 57센트, 실질 비용 58.7센트)로 즉시 진입할 경우 기대가치(EV)는 +1.2%에 불과하여 사전 설정한 최소 진입 기준(2%)을 미달하므로 진입 금지(No Position / Pass) 판정을 내립니다. 다만 메이커 수수료가 없는 56센트 또는 57센트에 지정가 주문(Resting Limit Order)을 걸어 체결될 경우에는 기대가치가 각각 +4.2%, +2.9%로 상승하므로, 이때만 $10~$14 한도 내에서 분할 진입을 허용한다는 전략적 가이드를 제공합니다. 정리 AI를 활용해 예측 시장이나 금융 시장에서 지속 가능한 우위(Edge)를 확보하려면 프롬프트 몇 줄로 승패를 물어보는 방식에서 벗어나야 합니다. 데이터 수집부터 모델링, 수수료 차감, 역검증까지 이어지는 정량적 파이프라인 구축이 필수적입니다. 시장의 수수료 제거: 거래소나 스포츠북의 호가에 포함된 마진(Vig)을 수학적으로 제거하여 진짜 공정 가격(No-vig Fair Price)을 먼저 파악해야 합니다. 엄격한 리스크 관리 고정: 자본금, 최소 엣지(2% 이상), 1/4 켈리 공식을 에이전트의 제약 조건으로 고정하여 감정적이고 무리한 진입을 통제합니다. LLM 자가 반박(Devil's Advocate) 기법 활용: 자체 정량 모델이 시장 가격과 괴리를 보일 때 시장이 옳다는 전제로 자가 반박을 수행함으로써 데이터셋에 누락된 비정형 변수(부상, 날씨, 로스터 변화 등)를 정밀하게 검증할 수 있습니다. 다룬 영상 Start Using AI Predictions To Beat The Market Today (beginner's guide) — All About AI · 17분
다양한 데이터 형태를 처리하는 멀티모달 환경에서 임베딩 모델의 크기와 연산 비용은 온디바이스 구축의 주요 걸림돌이었습니다. 구글 딥마인드가 공개한 경량 오픈 임베딩 모델을 활용하면 텍스트, 코드, 이미지, 비디오, 오디오를 단일 768차원 공간에 함께 투영할 수 있습니다. 모듈형 아키텍처와 마트료시카 임베딩 기법을 통해 리소스 제약이 심한 로컬 환경에서도 검색 정확도를 유지하며 벡터 파이프라인을 운영하는 구조를 살펴봅니다. Google EmbeddingGemma 2: Multimodal Open Model for on-Device Embeddings 구글 딥마인드의 EmbeddingGemma 2 는 텍스트, 소스코드, 이미지, 비디오, 오디오를 하나의 통일된 768차원 임베딩 공간으로 매핑하는 온디바이스 타깃의 오픈 멀티모달 임베딩 모델입니다. 라이선스는 Apache 2.0 을 채택하여 상용 및 로컬 환경에서 자유롭게 도입할 수 있도록 허용합니다. 모듈형 아키텍처와 리소스 효율성 이 모델은 단일 거대 신경망으로 묶인 것이 아니라 모달리티별로 분리된 모듈형 아키텍처 로 설계되었습니다. 따라서 시스템 목적에 맞춰 필요한 인코더만 골라 로드할 수 있습니다. 모듈 구성 파라미터 수 설명 텍스트 백본 270M 기본 텍스트 및 코드 임베딩 처리 비전 인코더 170M 이미지 및 비디오 프레임 처리 오디오 인코더 300M 음성 및 오디오 신호 처리 전체 합계 740M 전체 모달리티 통합 파라미터 텍스트 모달리티만 로드하여 실행할 경우 VRAM 소모량은 약 1.7GB에서 2GB 미만에 불과합니다. 이러한 낮은 메모리 풋프린트 덕분에 고성능 GPU가 없는 환경이나 일반 CPU 환경에서도 무리 없이 경량 임베딩 파이프라인을 운영할 수 있습니다. 패키지 설치 및 파이프라인 연동 모델은 Hugging Face에 google/embeddinggemma-2 저장소로 배포되어 있으며, 표준 라이브러리인 Sentence Transformers 및 Transformers 와 직접 연동됩니다. 로컬 환경 구성은 다음 명령어로 진행합니다. pip install -U sentence-transformers transformers pillow 라이브러리를 불러온 뒤 가중치를 적재하면 별도의 복잡한 어댑터 계층을 두지 않고도 텍스트 간 유사도 계산은 물론, 텍스트와 이미지 간의 교차 모달(Cross-modal) 검색 파이프라인을 즉시 생성할 수 있습니다. 마트료시카(Matryoshka) 임베딩 기법 EmbeddingGemma 2는 마트료시카(Matryoshka) 임베딩 을 지원합니다. 기본 출력인 768차원 벡터를 앞부분부터 잘라내어(Truncation) 256차원이나 128차원으로 축소할 수 있습니다. 벡터 차원을 128차원으로 줄이면 원본 대비 벡터 데이터베이스 저장 용량을 최대 6배까지 절감할 수 있습니다. 실제로 256차원으로 축소하여 진행한 이미지 검색 테스트에서도 768차원 원본 대비 검색 순위와 정확도가 떨어지지 않고 온전히 유지되는 특성을 보입니다. 단일 공간 멀티모달 검색 및 벤치마크 성능 모든 모달리티가 동일한 768차원 공간에 배치되므로, 별도의 텍스트 태그나 캡션 메타데이터를 달지 않은 순수 이미지·오디오 파일도 텍스트 쿼리 입력만으로 즉시 찾아낼 수 있습니다. 성능 검증 지표인 MTEB(Massive Text Embedding Benchmark) 코드 검색 평가에서 EmbeddingGemma 2는 약 78점대를 기록했습니다. 이는 파라미터가 1.5B에 달하는 대형 모델인 inf-retriever-v1-1.5b 보다 높은 수치로, 텍스트 백본 기준 270M, 전체 740M 수준의 파라미터 규모 대비 매우 우수한 가성비를 제공함을 증명합니다. 정리 EmbeddingGemma 2는 텍스트·코드·이미지·오디오를 768차원이라는 단일 벡터 공간으로 묶어 크로스 모달 검색의 복잡성을 낮췄습니다. 740M 규모의 모델을 텍스트(270M), 비전(170M), 오디오(300M)로 쪼개어 필요한 인코더만 1.7GB~2GB 미만의 VRAM으로 구동할 수 있으며, 마트료시카 임베딩을 통해 저장 비용을 6배까지 줄이면서도 대형 모델을 상회하는 벤치마크 성능을 유지합니다. 로컬 장치나 리소스가 제한된 환경에서 멀티모달 검색을 구현할 때 매우 실용적인 대안입니다. 다룬 영상 Google EmbeddingGemma 2: Multimodal Open Model for on-Device Embeddings — Fahd Mirza · 9분