개요
Miles는 기업을 위한 대규모 LLM/VLM 포스트 트레이닝 강화 학습 프레임워크로, slime에서 fork되었습니다. SGLang의 고처리량 rollout과 Megatron-LM의 확장 가능한 학습을 결합하여 완전 비동기 RL, 초 단위 가중치 업데이트 및 저정밀도 학습을 지원하며, 최첨단 모델과 다양한 하드웨어와 호환됩니다.
README 미리보기
\n\n\n\n### **Enterprise-Grade Reinforcement Learning for Large-Scale Model Post-Training**\n\n[](https://miles.radixark.com/)\n[](https://github.com/radixark/miles)\n[](https://miles.radixark.com/docs)\n[](LICENSE)\n[](https://slack.sglang.ai)\n\n| [**Website**](https://miles.radixark.com/) | [**Documentation**](https://miles.radixark.com/docs) | [**Quick Start**](https://miles.radixark.com/docs/getting-started/quick-start) | [**Supported Models**](https://miles.radixark.com/docs/models) | [**Miles Diffusion**](https://github.com/radixark/miles_diffusion) | [**Blog**](https://www.lmsys.org/blog?filter=miles) | [**Slack**](https://slack.sglang.ai) (`#miles-rl`) |\n\n\n\n--------------------------------------------------------------------------------\n\n## News\n\n- [2026/08] 🔥 Miles v0.1 is released! Read the blog post here: [Miles v0.1: Production-level Post-training](https://www.lmsys.org/blog/2026-08-18-miles-v0-1).\n- [2026/07] Towards Blackwell-Native 8-bit and 4-bit RL: End-to-End MXFP8 and NVFP4 RL in Miles ([blog](https://www.lmsys.org/blog/2026-07-29-mxfp8-nvfp4-rl)).\n- [2026/07] 🔥 SGLang and Miles add day-0 support for Kimi K3 ([blog](https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support)).\n- [2026/07] On-policy distillation lands in Miles ([blog](https://www.lmsys.org/blog/2026-07-18-opd-support-in-miles)).\n- [2026/07] 🔥 SGLang and Miles add day-0 support for Inkling, a frontier multimodal model ([blog](https://www.lmsys.org/blog/2026-07-15-inkling-day0-support)).\n- [2026/07] DeepSeek-V4 Flash RL training comes to AMD Instinct MI355X with Miles ([blog](https://www.lmsys.org/blog/2026-07-10-rocm-miles-dsv4)).\n- [2026/06] SGLang and Miles add day-0 support for NVIDIA Nemotron 3 Ultra ([blog](https://www.lmsys.org/blog/2026-06-04-nvidia-run-nemotron-3-ultra)).\n- [2026/05] No token left behind: token-in-token-out in Miles ([blog](https://www.lmsys.org/blog/2026-05-13-no-token-left-behind)).\n- [2026/04] Updating 1 T parameters in seconds: P2P we
FAQ (2)
문제 해결Slurm/Ray 클러스터에서 miles를 실행할 때 발생하는 SGLang 라우터 'Invalid address: invalid socket address syntax' 오류를 해결하는 방법
이 문제는 sglang_router.launch_router --host가 IP 리터럴만 허용하기 때문에 발생합니다(Rust SocketAddr로 파싱됨). 그러나 Slurm으로 관리되는 클러스터에서는 Ray가 노드 주소를 호스트명(예: node1234)으로 보고하므로, 라우터가 바인딩하기 전에 종료되고 이후 실행이 'Server at <host>:<port> not ready after 120s' 오류로 실패합니다.
해결 방법: PR #3356(커밋 9fecf0ff)이 포함된 리비전으로 miles를 업그레이드하세요. 해당 리비전은 배치된 호스트명을 라우터의 바인드 주소용 IP 리터럴로 해석하면서, 연결 측 URL과 분산 초기화에는 호스트명을 그대로 유지합니다. GB200/GB300 Slurm 환경에서 sglang-router 0.3.2로 정상 작동이 확인되었습니다.
이전 리비전에서의 임시 해결 방법: Ray가 호스트명 대신 IP 리터럴을 알리도록(advertise) 하세요. 즉, $(hostname) 대신 --node-ip-address=<node-IP>로 Ray를 시작하면 됩니다. --miles-host-ip 0.0.0.0은 유효한 일반적인 임시 해결 방법이 아니라는 점에 유의하세요.
문제 해결Qwen3-235B-A22B (MoE)에서 Miles p2p weight-sync 중 발생하는 'Process group MagicMock mock.cpu_group is not initialized in the world group map' 오류를 해결하는 방법
크래시는 Miles의 _create_cpu_replica()(update_weight_from_distributed/p2p.py 내)가 샤딩 레이아웃을 도출하기 위해 일회용 CPU 전용 레플리카를 생성하고 tp_group.cpu_group을 MagicMock으로 스텁 처리하기 때문에 발생합니다. 이후 SGLang 모델 구성 과정에서 MultimemAllGatherer(triton_symm_mem_ag)가 초기화되는데, 이 과정에서 torch.distributed.get_backend(tp_group.cpu_group)를 통해 토폴로지를 탐색하다가 등록되지 않은 mock 그룹에서 실패합니다. 해결 방법: 1) PR #2605의 수정 사항 적용 — 로컬 P2P 구조적 레플리카만 nnodes=1로 오버라이드합니다(현재 main에서는 get_context().override(...)를 통해). 이렇게 하면 TP/EP 샤딩 지오메트리를 유지하면서 MultimemAllGatherer 토폴로지 탐색을 우회할 수 있습니다. 단, 이 방법은 235B MoE 멀티노드 실행에 대해 아직 완전히 검증되지 않았으며, 나머지 MoE 스테이징/레이아웃 제한 사항은 #2605에 문서화되어 있습니다. 2) p2p 대신 broadcast 가중치 동기화 모드 사용 — 동일한 테스트 매트릭스에서 Qwen3-235B-A22B broadcast가 성공적으로 완료되었습니다.