DEV Community

Cover image for كيفية تشغيل Nemotron 3.5 Transcribe محليًا: GPU واحد، ملفات لمدة ساعة، بدون فاتورة API
Yusuf Khalidd
Yusuf Khalidd

Posted on Originally published at apidog.com

كيفية تشغيل Nemotron 3.5 Transcribe محليًا: GPU واحد، ملفات لمدة ساعة، بدون فاتورة API

كيفية تشغيل Nemotron 3.5 Transcribe محليًا: GPU واحد، ملفات لمدة ساعة، بدون فاتورة API

غلاف المقال

يمكنك تشغيل نموذج Nemotron 3.5 Transcribe الجديد من NVIDIA على وحدة معالجة رسومات واحدة ونسخ تسجيلات مدتها ساعة كاملة في 40 لغة دون دفع مقابل كل دقيقة أو إرسال الصوت إلى أي جهة خارجية. إنه أفضل نموذج مفتوح الأوزان على لوحة صدارة Hugging Face Open ASR، ويُطرح بموجب ترخيص OpenMDW-1.1 الملائم للاستخدام التجاري، وقد نشرت NVIDIA أوزان BF16 وFP8 وNVFP4 في يوم الإطلاق، 28 أكتوبر 2026.

جرّب Apidog اليوم

يغطي هذا الدليل العتاد الذي تحتاجه، والطرق الثلاث لتشغيله (vLLM وSGLang-Omni وTransformers)، والأوامر الدقيقة من بطاقة النموذج الرسمية، والإعدادات التي يخطئ فيها الناس. وقد نُسخت جميع الأوامر من البطاقة في 29 أكتوبر 2026.

جديد على النموذج؟ يشرح دليلنا المجاني ما يفعله وكيف يُصنَّف. ليس لديك وحدة معالجة رسومات؟ تبلغ تكلفة واجهة API المستضافة 0.002 دولار لكل دقيقة.

مخطط معماري لنموذج Nemotron 3.5 Transcribe: يغذي الصوت مرمّز ASR بحجم 600 مليون معامل ومرمّز متحدثين، يغذيان بدورهما نموذج لغة هجين من Mamba-2 وTransformer بخبراء متعددين بـ 34 مليار معامل إجمالًا ونحو 4.3 مليار معامل نشطة

لماذا تشغّله محليًا

  • لا فاتورة لكل دقيقة. بسعر DeepInfra البالغ 0.002 دولار لكل دقيقة، تكلّف 10,000 ساعة 1,200 دولار. أما على وحدة معالجة الرسومات الخاصة بك فالتكلفة هي الكهرباء فقط.
  • الخصوصية. مكالمات العملاء والنسخ الطبي والتسجيلات القانونية لا تغادر شبكتك أبدًا.
  • مجموعة الميزات الكاملة. يدعم مسار vLLM الطوابع الزمنية للكلمات، وتمييز المتحدثين، والترجمة، والمطالبات السياقية. بعض نقاط النهاية المستضافة لا تُتيح سوى جزء من ذلك.
  • الضبط الدقيق. تُظهر تدوينة الإطلاق من NVIDIA أن ضبطًا دقيقًا طبيًا خفّض معدل خطأ الكلمات (WER) من 30.8% إلى 11.8%. ولا يمكنك فعل ذلك إلا بامتلاك الأوزان.

العتاد: ما الذي يشغّله

يمتلك النموذج 34 مليار معامل إجمالًا ونحو 4.3 مليار معامل نشطة، لذا فإن الأوزان كبيرة حتى وإن كان الحساب لكل رمز (token) صغيرًا. الهدف المرجعي لدى NVIDIA هو وحدة H100 بسعة 80 جيجابايت بدقة BF16. جدول التوافق من بطاقة النموذج:

GPU Precisions Runtimes
H100, H200 BF16, FP8 vLLM 0.32.0, Transformers, SGLang-Omni 0.2.0 (H100)
A100 80 GB BF16 vLLM 0.32.0, Transformers
L40S 48 GB FP8 vLLM 0.32.0, Transformers
B200, GB200, GB300 DGX Station BF16, FP8, NVFP4 vLLM 0.32.0, Transformers
DGX Spark (GB10), Jetson Thor BF16, FP8, NVFP4 vLLM 0.32.0, Transformers
RTX PRO 6000 Blackwell Server BF16, FP8, NVFP4 vLLM, Transformers, SGLang-Omni, GGML
RTX 5090 (32 GB) NVFP4 only vLLM 0.32.0, Transformers, GGML

اختر نقطة التحقق (checkpoint) المناسبة لبطاقتك:

بطاقة بسعة 24 جيجابايت مثل RTX 4090 ليست على القائمة، وApple Silicon غير مدعوم. أنظمة التشغيل هي Linux، أو Windows عبر WSL2. يعمل GGML أيضًا على Windows الأصلي، لكن تدوينة إطلاق NVIDIA تقول إن بناء NeMo-Speech.cpp المحلي لا يزال «قريبًا».

الخيار الأول: خادم vLLM (موصى به)

يمنحك vLLM نقطة نهاية متوافقة مع OpenAI مع التجميع على دفعات (batching)، وملفات مدتها ساعة، وفك الترميز التخميني (speculative decoding)، والطوابع الزمنية للكلمات. يحتاج إلى vLLM 0.32.0 بالإضافة إلى أحدث فرع main من NeMo Speech، الذي يوفّر إضافة vLLM الخاصة بالنموذج.

مخطط مقارن بين خيارات التشغيل المحلي الثلاثة لنموذج Nemotron 3.5 Transcribe: vLLM مع NeMo Speech للميزات الكاملة، وSGLang-Omni للنسخ النصي البسيط، وTransformers للسكربتات

التثبيت

تستخدم البطاقة uv وPython 3.13:

git clone https://github.com/NVIDIA-NeMo/Speech.git nemo-speech
cd nemo-speech
uv venv --python 3.13 .venv
UV_PROJECT_ENVIRONMENT=$PWD/.venv uv sync --extra asr --extra vllm --locked --no-install-project
uv pip install --python .venv/bin/python --no-deps -e .
uv pip install --python .venv/bin/python --no-deps av==19.0.2
uv pip install --python .venv/bin/python --no-deps opencv-python-headless==5.0.0.93
source .venv/bin/activate
hf download nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B --local-dir ./NVIDIA-Nemotron-3.5-Transcribe-30B-A4B
Enter fullscreen mode Exit fullscreen mode

تتيح PyAV (وهي av) فك ترميز ملفات M4A وغيرها من الصيغ المضغوطة دون الحاجة إلى FFmpeg على النظام. أما OpenCV فهي موجودة لأن vLLM يحتاجها بينما تُسقطها إعدادات تبعيات NeMo.

تشغيل الخادم

export VLLM_PLUGINS=nemo_speechlm
export VLLM_MAX_AUDIO_DECODE_DURATION_S=3600
export VLLM_MAX_AUDIO_CLIP_FILESIZE_MB=180
export VLLM_USE_V2_MODEL_RUNNER=0
vllm serve ./NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --served-model-name nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --trust-remote-code --dtype bfloat16 --gpu-memory-utilization 0.94 \
  --max-model-len 65536 --max-num-batched-tokens 4096 --max-num-seqs 192 \
  --enable-chunked-prefill --no-enable-prefix-caching \
  --use-replayssm --mamba-backend flashinfer --mamba-cache-mode none \
  --mm-processor-cache-gb 0 --no-async-scheduling \
  --limit-mm-per-prompt '{"audio":{"count":6,"length":120000000}}' \
  --speculative-config '{"method":"mtp","num_speculative_tokens":8}' \
  --reasoning-parser nemotron_v3 \
  --trust-request-mm-kwargs \
  --middleware nemo.collections.speechlm2.vllm.salm.ctc_serving.ctc_timestamp_middleware
Enter fullscreen mode Exit fullscreen mode

المعلَمات (flags) التي يستحق فهمها:

  • VLLM_MAX_AUDIO_DECODE_DURATION_S=3600 يرفع حد الصوت في vLLM من 600 ثانية إلى ساعة واحدة. إذا نسيته فسوف تفشل الملفات الطويلة.
  • VLLM_USE_V2_MODEL_RUNNER=0 يُبقي على مشغّل V1، الذي تحتاجه الطوابع الزمنية للكلمات.
  • --speculative-config يفعّل التنبؤ متعدد الرموز بثمانية رموز مسودة (MTP8). على H100، قاست NVIDIA قيمة RTFx إجمالية للنص الإنجليزي المجمّع على دفعات تبلغ 270 مع MTP8 و410 مع MTP2، لذا جرّب "num_speculative_tokens":2 إذا كانت الإنتاجية تهمك أكثر من زمن الاستجابة.
  • --middleware ... ctc_timestamp_middleware و--trust-request-mm-kwargs يتيحان للطلبات طلب الطوابع الزمنية للكلمات.
  • الإعدادات موجّهة لوحدة H100 بسعة 80 جيجابايت. على البطاقات الأخرى، خفّض --gpu-memory-utilization أو --max-model-len أو --max-num-seqs.

يستمع الخادم على 127.0.0.1:8000. أضف --host 0.0.0.0 للوصول إليه من أجهزة أخرى على شبكتك.

أرسل ملفًا

import base64
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", [REDACTED CREDENTIAL])
audio = base64.b64encode(open("standup.wav", "rb").read()).decode()

response = client.chat.completions.create(
    model="nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "Transcribe the following audio."},
        {"type": "audio_url", "audio_url": {"url": f"data:audio/wav;base64,{audio}"}},
    ]}],
    temperature=0,
    extra_body={"chat_template_kwargs": {"enable_thinking": False}, "skip_special_tokens": False},
)
print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

استبدل تعليمة النص بأي مطالبة مهمة. لاجتماع فيه عدة أصوات:

Transcribe verbatim, including fillers. Write numbers as spoken, without punctuation or capitalization. Start every speaker turn with <spk:0>, <spk:1>, etc. Keep one stable tag per speaker. Output only the speaker-tagged transcript.
Enter fullscreen mode Exit fullscreen mode

لطلبات الطوابع الزمنية للكلمات قواعد: تسجيل واحد لكل طلب، وstream=false وn=1. وعندها يتضمن الرد كائن ctc_timestamps يحتوي على الكلمات وأوقات البداية والنهاية بالثواني ووسوم المتحدثين.

الخيار الثاني: SGLang-Omni للنسخ النصي البسيط

إذا كنت تحتاج فقط إلى نص من ملفات كاملة، فإن SGLang-Omni 0.2.0 أبسط ولا يحتاج إلى NeMo. وقد تم التحقق من صحته على وحدة H100 بسعة 80 جيجابايت ووحدة RTX PRO 6000 Blackwell بنقطة تحقق BF16 أو FP8.

sgl-omni serve \
  --model-path nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
  --model-name nemotron-transcribe \
  --mem-fraction-static 0.85 \
  --port 8000

curl http://localhost:8000/v1/audio/transcriptions \
  -F model=nemotron-transcribe \
  -F file=@audio.wav
Enter fullscreen mode Exit fullscreen mode

مسار /v1/audio/transcriptions ذاك يطابق الشكل الذي تستخدمه واجهة Whisper API من OpenAI، لذا غالبًا لا يحتاج كود عميل Whisper الحالي سوى عنوان أساسي جديد. المقابل: لا طوابع زمنية للكلمات، ولا وسوم للمتحدثين، ولا ترجمة، ولا فك ترميز تخميني في هذا التكامل.

الخيار الثالث: Transformers داخل سكربت

لدفاتر الملاحظات (notebooks) والمهام لمرة واحدة، شغّله داخل العملية ذاتها مع Hugging Face Transformers المثبّت من المصدر:

pip install git+https://github.com/huggingface/transformers
Enter fullscreen mode Exit fullscreen mode
from transformers import AutoModelForMultimodalLM, AutoProcessor

model_id = "nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

[REDACTED PROMPT]
          "and verbal fillers. Put speaker tags <spk:0> <spk:1> <spk:2> <spk:3> on the transcription.")
inputs = processor.apply_transcription_request(["podcast.mp3"], [REDACTED PROMPT]
outputs = model.generate(**inputs, max_new_tokens=4096)
print(processor.decode(outputs[:, inputs.input_ids.shape[1]:], skip_special_tokens=False))
Enter fullscreen mode Exit fullscreen mode

إنها أسهل طريقة للبدء وأبطأ طريقة للتشغيل على نطاق واسع. ارفع max_new_tokens للملفات الطويلة: فالساعة الكثيفة بالكلام قد تنتج نحو 20,000 رمز.

ما مدى سرعته على وحدة معالجة الرسومات الخاصة بك؟

الرقم الرئيسي لدى NVIDIA هو 2,238 ثانية من الصوت لكل ثانية على وحدة RTX PRO 6000 Blackwell واحدة، مع أوزان NVFP4 وفك الترميز التخميني DFlash2، و0.13 ثانية لإرجاع مقطع مدته 30 ثانية. اقرأ الحاشية: هذه الأرقام تأتي من NIM المُحسّن، الذي لم تُنشر تغييراته في الخدمة كمصدر مفتوح بعد. وتقول البطاقة إن تكامل vLLM المفتوح يُتوقع أن يكون أبطأ بنحو مرتين.

للنسخ الإنجليزي المجمّع على دفعات على H100 بدقة BF16، تسرد البطاقة أرقام RTFx التالية (ثواني الصوت لكل ثانية من الحساب):

Speculative decoding RTFx
MTP2 410
DFlash2, K=7 340
MTP8 270
DFlash2, K=15 260

حتى أبطأ صف يتجاوز ساعة من الصوت في أقل من 15 ثانية من زمن وحدة معالجة الرسومات في العمل المجمّع على دفعات. وإذا أردت نموذج المسودة DFlash2، فاعلم أن vLLM 0.32.0 يحتاج إلى تصحيح صغير من البطاقة، وأن DFlash2 يعطّل الطوابع الزمنية للكلمات، ولا ينبغي جمعه مع MTP.

مشكلات شائعة وحلولها

  • الملفات الطويلة تُقطع عند 10 دقائق. لقد تجاهلت VLLM_MAX_AUDIO_DECODE_DURATION_S=3600.
  • لا طوابع زمنية في الرد. تحقق من VLLM_USE_V2_MODEL_RUNNER=0، ومن معلَم --middleware، ومن أن الطلب يحتوي على stream=false وتسجيل واحد.
  • نفاد الذاكرة على البطاقات الأصغر. انتقل إلى نقطة تحقق FP8 أو NVFP4 وخفّض --max-num-seqs.
  • عبارات متكررة في نهاية النص. توصي البطاقة بوجود حاجز ضد حلقات التوليد على المخرجات النهائية. حدّد سقفًا لـmax_tokens واقتطع التكرارات.
  • تهجئة خاطئة للأسماء. أضف Context terms: <names> إلى المطالبة.
  • أصوات خلفية في النص. جرّب مطالبة المجال القريب التجريبية من البطاقة، والتي خفّضت معدل خطأ الكلمات (WER) في الصوت المختلط من 27.32% إلى 4.78% في اختبار NVIDIA.

إذا كنت جديدًا على vLLM نفسه، فإن شرحنا لـ vLLM يغطي كيفية تجميعه للطلبات على دفعات وإدارته لذاكرة وحدة معالجة الرسومات.

دع وكيل البرمجة لديك يختبر الخادم المحلي باستخدام Apidog CLI

لا يكون النموذج المحلي مفيدًا إلا إذا بقيت نقطة نهايته صحيحة عبر ترقيات vLLM وتعديلات المطالبات وتبديل نقاط التحقق. دع وكيل البرمجة لديك يتولى ذلك باستخدام Apidog CLI، بتشغيل الفحوصات ضد http://127.0.0.1:8000 من الجهاز نفسه.

npm install -g apidog-cli@latest
apidog login --with-token <YOUR_TOKEN>
npx -y skills add https://apidog.com   # pick your agent when prompted
Enter fullscreen mode Exit fullscreen mode

ثم أعطِ وكيلك مطالبة واحدة:

In Apidog project <id>, add POST {{baseUrl}}/v1/chat/completions for my local
Nemotron 3.5 Transcribe server. Create test cases that send samples/en.wav and
samples/two-speakers.wav as base64 audio_url content with temperature 0, and assert
status 200, a non-empty choices[0].message.content, and at least two distinct <spk:N>
tags for the two-speaker file. Run them against the local environment and report failures.
Enter fullscreen mode Exit fullscreen mode

يقرأ الوكيل المخطط، ويتحقق من صحة حمولته، ويكتب الحالات ويشغّلها:

apidog cli-schema get test-case-create
apidog cli-schema validate test-case-create --file case.json
apidog test-case create --project <id> --file case.json
apidog run --test-case <caseId> --project <id> -e <envId> -r cli,json
Enter fullscreen mode Exit fullscreen mode

شغّله بعد كل ترقية للخادم، أو اربط apidog run ... -r junit بـ CI كما هو موضح في Apidog CLI في خط أنابيب CI/CD. لإعداد الوكيل، راجع Apidog CLI في Claude Code.

الأسئلة الشائعة

هل يمكنني تشغيل Nemotron 3.5 Transcribe على RTX 4090؟ إنها ليست على قائمة التوافق لدى NVIDIA. أصغر بطاقة استهلاكية مُدرجة هي RTX 5090 مع نقطة تحقق NVFP4.

هل يعمل على Mac؟ لا يدعم أي وقت تشغيل رسمي Apple Silicon حتى 29 أكتوبر 2026.

هل الاستخدام المحلي مجاني للمنتجات التجارية؟ يسمح ترخيص OpenMDW-1.1 بالاستخدام التجاري وغير التجاري. اقرأ نص الترخيص لمعرفة شروط الإسناد قبل الإطلاق.

هل يمكنه نسخ الصوت المباشر؟ لا. إنه نموذج غير متصل (offline) للملفات المسجلة. وتوفّر NVIDIA نموذجًا منفصلًا هو Nemotron 3.5 ASR Streaming للاستخدام المباشر.

أيهما أسرع، vLLM أم SGLang-Omni؟ لا تنشر NVIDIA مقارنة مباشرة بينهما. استخدم vLLM عندما تحتاج إلى طوابع زمنية أو متحدثين أو ترجمة، وSGLang-Omni لأبسط خادم نصي فقط.

كيف يُصنَّف مقابل النماذج المحلية الأخرى؟ يتصدر كل نموذج مفتوح الأوزان على لوحة صدارة Open ASR بتاريخ 28 أكتوبر. وتقارنه قائمتنا أفضل نماذج تحويل الكلام إلى نص مفتوحة المصدر بـ Qwen3-ASR وGranite Speech وCanary-Qwen وVoxtral وWhisper.

شغّله

نزّل نقطة التحقق التي تناسب وحدة معالجة الرسومات لديك، وشغّل vLLM مع حد الصوت البالغ ساعة واحدة وبرمجية الطوابع الزمنية الوسيطة، وأرسل ملف WAV عبر عميل OpenAI. ثم دع وكيلك يشغّل فحوصات Apidog ضد نقطة النهاية المحلية حتى تُثبت كل ترقية أنه لا يزال ينسخ بنجاح قبل أن تثق به في تسجيلات حقيقية.

فيديو إضافي: How to Generate A Public API Documentation with APIDog

Top comments (0)