Ornith-1.0
Ornith-1.0
이 문서는 DeepReinforce의 자기 개선형 오픈소스 에이전틱 코딩 모델군인 Ornith-1.0을 SGLang으로 배포하고 호출하는 방법을 설명해요. 397B, 35B, 9B 저장소와 FP8, GGUF 변형을 포함하며, Gemma 4와 Qwen 3.5 위에 사후 훈련된 모델이에요. 원문 페이지에는 하드웨어 플랫폼과 배포 전략을 골라 명령을 자동 생성해 주는 Playground가 포함되어 있어요.
출처: 문서
본문
배포
SGLang 설치
Ornith-1.0 모델 카드는 SGLang >=0.5.9를 권장해요. 아래 Deploy 패널이 기본 serve 명령을 생성하며, 모델 카드 quickstart의 reasoning 및 tool-call 파서( thinking... response 트레이스용 --reasoning-parser qwen3, Qwen 스타일 XML 도구 호출용 --tool-call-parser qwen3_coder)는 Playground를 통해 위에 추가돼요.
Python (pip / uv):
pip install --upgrade pip
pip install uv
uv pip install --prerelease=allow "sglang>=0.5.9"
그런 다음 해당 환경에서 아래 명령 패널의 Python 출력을 실행하세요.
Docker:
docker pull lmsysorg/sglang:latest
이미지 실행 방법은 Install -> Method 3: Using Docker를 참고하세요. 내부 sglang serve ...을 아래 명령 생성기가 만드는 것으로 대체하세요.
Ornith 체크포인트를 골라 실행 명령을 생성하세요. 이 매트릭스에서 non-FP8 397B 레시피는 H200 단일 노드를 요구해요. 397B-FP8 레시피는 TP=8로 H100과 H200에서 사용 가능해요; H100은 35B와 9B 체크포인트도 지원해요. 35B 레시피는 이 매트릭스에서 텐서 병렬화 2를 사용해요. 9B 체크포인트는 dense이며 기본적으로 단일 GPU에서 서빙돼요; 명령 패널이 이를 --tp 1로 명시해요.
Playground
Playground는 Deploy 패널이 보여주는 셀 위에 SGLang 기능을 얹어요 — 사용자의 override만 바뀌고, 변경이 있으면 새 구성이 종단간 실행될 때까지 배지가 Not Verified로 바뀌어요.
Ornith-1.0의 노브는 reasoning 및 tool-call 파서예요:
- Reasoning Parser는
--reasoning-parser qwen3을 추가해요. Ornith는thinking... response트레이스를 생성해요; 이것을 켜면 SGLang이 이를message.reasoning_content로 노출하고content에 태그를 인라인으로 남기지 않아요. - Tool Call Parser는
--tool-call-parser qwen3_coder를 추가해 Qwen 스타일 XML 도구 호출을 OpenAI 호환tool_calls로 반환해요.
1. 모델 소개
Ornith-1.0은 DeepReinforce의 자기 개선형 오픈소스 에이전틱 코딩 모델군이에요. 모델 카드는 이 계열이 Gemma 4와 Qwen 3.5 위에 사후 훈련됐다고 설명하며, 컬렉션은 현재 397B, 35B, 9B 저장소와 FP8, GGUF 변형을 포함해요. 모델 카드는 Terminal-Bench 2.1, SWE-Bench, NL2Repo, ClawEval, SWE Atlas 벤치마크 결과를 보고해요.
주요 특징:
- 에이전틱 코딩 특화: 모델 카드는 Ornith-1.0을 에이전틱 코딩에 특화됐다고 설명하고 코딩 에이전트 벤치마크 결과를 보고해요.
- 자기 개선 훈련: 모델 카드는 Ornith-1.0이 강화학습으로 솔루션 롤아웃과 그 롤아웃을 구동하는 스캐폴드를 모두 최적화한다고 밝혀요.
- 추론 모델 동작: 어시스턴트 응답은 최종 답변 전에
thinking... responsereasoning 블록으로 시작해요; Playground에서--reasoning-parser qwen3토글을 활성화해reasoning_content로 분리하세요. - 도구 호출: Qwen 스타일 XML 도구 호출을 생성해요; Playground에서
--tool-call-parser qwen3_coder토글을 활성화하세요. - 장문 컨텍스트: 모델 카드 레시피는
--context-length 262144을 사용해요. - MIT 라이선스: Hugging Face 저장소는 MIT로 출시돼요.
사용 가능한 모델:
| 모델 | 형식 | Deploy 패널 | 참고 |
|---|---|---|---|
| deepreinforce-ai/Ornith-1.0-397B | BF16 | H200 전용 | 플래그십 397B MoE 체크포인트; 모델 카드 베이스라인은 H200 단일 노드에서 TP=8 사용. |
| deepreinforce-ai/Ornith-1.0-397B-FP8 | FP8 | H100 / H200 | 컬렉션의 FP8 저장소; 배포 명령은 TP=8로 이 repo id를 사용. |
| deepreinforce-ai/Ornith-1.0-35B | BF16 | H100 / H200 | 35B MoE 체크포인트; 배포 명령은 TP=2 사용. |
| deepreinforce-ai/Ornith-1.0-35B-FP8 | FP8 | H100 / H200 | 컬렉션의 FP8 저장소; 배포 명령은 TP=2로 이 repo id를 사용. |
| deepreinforce-ai/Ornith-1.0-9B | BF16 | H100 / H200 | Dense 9B 체크포인트; 모델 카드는 효율적 단일 GPU 배포용으로 설계됐다고 설명. |
| deepreinforce-ai/Ornith-1.0-35B-GGUF | GGUF | 아니오 | 완전성을 위해 나열; GGUF는 llama.cpp 스타일 로컬 추론을 대상으로 함. |
| deepreinforce-ai/Ornith-1.0-9B-GGUF | GGUF | 아니오 | 완전성을 위해 나열; 모델 카드는 GGUF 빌드의 llama.cpp와 Ollama 예시를 보여줌. |
라이선스: MIT
리소스: Hugging Face collection · Ornith blog
2. 설정 팁
- Reasoning parser: Ornith 응답은
thinking... response를 포함해요. Playground에서--reasoning-parser qwen3토글을 활성화해 OpenAI 호환 응답이 reasoning 트레이스를message.reasoning_content로 노출하게 하세요. - Tool-call parser: Playground에서
--tool-call-parser qwen3_coder토글을 활성화해<tool_call>블록을 OpenAI 호환 도구 호출로 반환하세요. - 컨텍스트 길이: 모델 카드 SGLang 레시피는
--context-length 262144을 사용해요. 메모리 여유가 더 필요하면 낮추세요. - 텐서 병렬화: 397B 모델 카드 레시피는
--tp 8을 사용해요; 이 단일 노드 매트릭스에서 non-FP8 397B는 H200 전용이고, 397B-FP8은 H100과 H200 모두에서 가능해요. 35B 배포 명령은--tp 2를 사용해요. 9B 모델 카드 레시피는 기본적으로 단일 GPU예요; 명령 패널이--tp 1로 명시해요. 노드와 메모리 예산에 맞게 TP를 조정하세요. - 샘플링: 모델 카드는 일반 사용에
temperature=0.6,top_p=0.95,top_k=20을 권장해요. 보고된 벤치마크 설정은 작업별 샘플링 파라미터를 다르게 쓸 수 있어요. - 벤치마크: 모델 카드의 벤치마크 수치는 DeepReinforce가 보고한 것이에요. 맥락에 유용하지만, 명령 패널은 정확한 실행이 승인될 때까지 레시피를 검증되지 않은 채로 둬요.
3. 사용 예시
3.1 기본 채팅 완성
message.reasoning_content는 서버가 --reasoning-parser qwen3 토글로 실행될 때만 채워져요(Playground 참고); 그렇지 않으면 thinking... response 트레이스가 message.content에 인라인으로 유지돼요.
Python 클라이언트:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="Ornith-1.0-9B",
messages=[
{"role": "user", "content": "Write a compact Python function is_prime(n)."}
],
temperature=0.6,
top_p=0.95,
max_tokens=1024,
extra_body={"top_k": 20},
)
message = response.choices[0].message
print("=============== Reasoning ===============")
print(message.reasoning_content)
print("=============== Answer ==================")
print(message.content)
3.2 도구 호출
Playground에서 --tool-call-parser qwen3_coder 토글을 활성화하고 결과 명령으로 실행하세요. 그런 다음 표준 OpenAI 호환 tools 필드를 사용하세요:
도구 호출 요청:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
tools = [{
"type": "function",
"function": {
"name": "run_tests",
"description": "Run the project's test suite.",
"parameters": {
"type": "object",
"properties": {
"target": {"type": "string", "description": "Test target or command"}
},
"required": ["target"],
},
},
}]
response = client.chat.completions.create(
model="Ornith-1.0-9B",
messages=[{"role": "user", "content": "Run the unit tests for the parser module."}],
tools=tools,
tool_choice="auto",
temperature=0.6,
top_p=0.95,
max_tokens=2048,
)
print(response.choices[0].message.tool_calls)