ddwkim commited on
Commit
3d56cdc
·
verified ·
1 Parent(s): 6dec579

docs: add vLLM-Omni serving guide

Browse files

Document the compatible KRAFTON vLLM-Omni branch and validated revision, single-GPU server configuration, and TTS/STT HTTP examples in both English and Korean.

Files changed (2) hide show
  1. README.md +98 -1
  2. README_ko.md +95 -0
README.md CHANGED
@@ -266,6 +266,103 @@ messages = [
266
  response = pipe.chat(messages)
267
  ```
268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
  ## Training
270
 
271
  The released checkpoint is the final model following:
@@ -310,4 +407,4 @@ Republic of Korea (Grant No. 2026-AIData-WII01).
310
  This model is released under the
311
  [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/) license. The
312
  bundled A.X K2 Light implementation code retains its Apache License 2.0
313
- notices, which apply to that code only.
 
266
  response = pipe.chat(messages)
267
  ```
268
 
269
+ ## Deployment with vLLM-Omni
270
+
271
+ Use KRAFTON's official
272
+ [vLLM-Omni repository](https://github.com/krafton-ai/vllm-omni) and the
273
+ compatible `feat/axk2_raon_speech` branch. The validated revision is
274
+ [`7bcaf21`](https://github.com/krafton-ai/vllm-omni/commit/7bcaf21df881bda4280cbbf9752fc356e753d3bb);
275
+ you can optionally pin it to match the vLLM-Omni implementation revision used
276
+ for validation.
277
+
278
+ ### Install and serve
279
+
280
+ ```bash
281
+ git clone --branch feat/axk2_raon_speech --single-branch \
282
+ https://github.com/krafton-ai/vllm-omni.git
283
+ cd vllm-omni
284
+
285
+ # Optional: pin the revision validated with this checkpoint.
286
+ git checkout 7bcaf21df881bda4280cbbf9752fc356e753d3bb
287
+
288
+ python -m pip install "vllm==0.20.0"
289
+ python -m pip install -e .
290
+ ```
291
+
292
+ The bundled stage profile targets one GPU with approximately 96 GB of VRAM.
293
+ It uses tensor parallelism 1 (`TP=1`) and sets both the maximum model length
294
+ and maximum batched tokens to 4096. With vLLM 0.20,
295
+ `VLLM_MLA_DISABLE=1` is required because this checkpoint has a 192-wide
296
+ KV-cache head.
297
+
298
+ From the cloned repository root, start the server with:
299
+
300
+ ```bash
301
+ export VLLM_MLA_DISABLE=1
302
+
303
+ vllm-omni serve KRAFTON/A.X-K2-Raon-Speech-21B-A3B \
304
+ --stage-configs-path examples/offline_inference/raon/raon_axk1_local.yaml \
305
+ --host 0.0.0.0 \
306
+ --port 8091 \
307
+ --trust-remote-code \
308
+ --omni
309
+ ```
310
+
311
+ ### Health and model listing
312
+
313
+ ```bash
314
+ curl -fS http://localhost:8091/health
315
+ curl -fS http://localhost:8091/v1/models
316
+ ```
317
+
318
+ ### TTS
319
+
320
+ ```bash
321
+ curl -fS -X POST http://localhost:8091/v1/audio/speech \
322
+ -H "Content-Type: application/json" \
323
+ --data-binary @- \
324
+ --output axk2_tts.wav <<'EOF'
325
+ {
326
+ "model": "KRAFTON/A.X-K2-Raon-Speech-21B-A3B",
327
+ "input": "Hello, this is A.X-K2 Raon Speech.",
328
+ "response_format": "wav"
329
+ }
330
+ EOF
331
+ ```
332
+
333
+ ### STT
334
+
335
+ Encode the input audio as a portable single-line base64 data URL:
336
+
337
+ ```bash
338
+ AUDIO_B64="$(base64 < audio.wav | tr -d '\n')"
339
+
340
+ curl -fS -X POST http://localhost:8091/v1/chat/completions \
341
+ -H "Content-Type: application/json" \
342
+ --data-binary @- <<EOF
343
+ {
344
+ "model": "KRAFTON/A.X-K2-Raon-Speech-21B-A3B",
345
+ "messages": [
346
+ {
347
+ "role": "user",
348
+ "content": [
349
+ {
350
+ "type": "audio_url",
351
+ "audio_url": {
352
+ "url": "data:audio/wav;base64,$AUDIO_B64"
353
+ }
354
+ },
355
+ {
356
+ "type": "text",
357
+ "text": "Transcribe the audio into text."
358
+ }
359
+ ]
360
+ }
361
+ ]
362
+ }
363
+ EOF
364
+ ```
365
+
366
  ## Training
367
 
368
  The released checkpoint is the final model following:
 
407
  This model is released under the
408
  [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/) license. The
409
  bundled A.X K2 Light implementation code retains its Apache License 2.0
410
+ notices, which apply to that code only.
README_ko.md CHANGED
@@ -267,6 +267,101 @@ messages = [
267
  response = pipe.chat(messages)
268
  ```
269
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  ## Training
271
 
272
  공개된 checkpoint는 다음 과정을 거친 최종 모델입니다.
 
267
  response = pipe.chat(messages)
268
  ```
269
 
270
+ ## vLLM-Omni 배포
271
+
272
+ KRAFTON의 공식
273
+ [vLLM-Omni 저장소](https://github.com/krafton-ai/vllm-omni)와 호환 브랜치인
274
+ `feat/axk2_raon_speech`를 사용합니다. 검증된 리비전은
275
+ [`7bcaf21`](https://github.com/krafton-ai/vllm-omni/commit/7bcaf21df881bda4280cbbf9752fc356e753d3bb)이며,
276
+ 검증에 사용된 vLLM-Omni 구현 리비전과 일치시키려면 이 커밋으로 고정하세요.
277
+
278
+ ### 설치 및 실행
279
+
280
+ ```bash
281
+ git clone --branch feat/axk2_raon_speech --single-branch \
282
+ https://github.com/krafton-ai/vllm-omni.git
283
+ cd vllm-omni
284
+
285
+ # Optional: pin the revision validated with this checkpoint.
286
+ git checkout 7bcaf21df881bda4280cbbf9752fc356e753d3bb
287
+
288
+ python -m pip install "vllm==0.20.0"
289
+ python -m pip install -e .
290
+ ```
291
+
292
+ 함께 제공되는 단계 프로필은 약 96 GB VRAM을 갖춘 GPU 한 장을 대상으로
293
+ 합니다. 텐서 병렬화는 1(`TP=1`)이며, 최대 모델 길이와 최대 배치 토큰 수는
294
+ 모두 4096입니다. vLLM 0.20에서는 이 체크포인트의 KV 캐시 헤드 너비가
295
+ 192이므로 `VLLM_MLA_DISABLE=1` 설정이 필요합니다.
296
+
297
+ 복제한 저장소의 최상위 디렉터리에서 다음 명령으로 서버를 실행합니다.
298
+
299
+ ```bash
300
+ export VLLM_MLA_DISABLE=1
301
+
302
+ vllm-omni serve KRAFTON/A.X-K2-Raon-Speech-21B-A3B \
303
+ --stage-configs-path examples/offline_inference/raon/raon_axk1_local.yaml \
304
+ --host 0.0.0.0 \
305
+ --port 8091 \
306
+ --trust-remote-code \
307
+ --omni
308
+ ```
309
+
310
+ ### 상태 확인 및 모델 목록
311
+
312
+ ```bash
313
+ curl -fS http://localhost:8091/health
314
+ curl -fS http://localhost:8091/v1/models
315
+ ```
316
+
317
+ ### TTS
318
+
319
+ ```bash
320
+ curl -fS -X POST http://localhost:8091/v1/audio/speech \
321
+ -H "Content-Type: application/json" \
322
+ --data-binary @- \
323
+ --output axk2_tts.wav <<'EOF'
324
+ {
325
+ "model": "KRAFTON/A.X-K2-Raon-Speech-21B-A3B",
326
+ "input": "Hello, this is A.X-K2 Raon Speech.",
327
+ "response_format": "wav"
328
+ }
329
+ EOF
330
+ ```
331
+
332
+ ### STT
333
+
334
+ 입력 오디오를 이식성이 높은 한 줄짜리 base64 데이터 URL로 인코딩합니다.
335
+
336
+ ```bash
337
+ AUDIO_B64="$(base64 < audio.wav | tr -d '\n')"
338
+
339
+ curl -fS -X POST http://localhost:8091/v1/chat/completions \
340
+ -H "Content-Type: application/json" \
341
+ --data-binary @- <<EOF
342
+ {
343
+ "model": "KRAFTON/A.X-K2-Raon-Speech-21B-A3B",
344
+ "messages": [
345
+ {
346
+ "role": "user",
347
+ "content": [
348
+ {
349
+ "type": "audio_url",
350
+ "audio_url": {
351
+ "url": "data:audio/wav;base64,$AUDIO_B64"
352
+ }
353
+ },
354
+ {
355
+ "type": "text",
356
+ "text": "Transcribe the audio into text."
357
+ }
358
+ ]
359
+ }
360
+ ]
361
+ }
362
+ EOF
363
+ ```
364
+
365
  ## Training
366
 
367
  공개된 checkpoint는 다음 과정을 거친 최종 모델입니다.