รัน vLLM Server บน Hugging Face Jobs ง่าย ๆ ในคำสั่งเดียว 🚀

การรันโมเดลภาษาขนาดใหญ่ (LLM) สำหรับการทดสอบ ประเมินผล หรือการสร้างข้อความแบบกลุ่ม (batch generation) อาจดูซับซ้อน แต่ Hugging Face Jobs ช่วยให้กระบวนการนี้ง่ายขึ้นอย่างไม่น่าเชื่อ เพียงใช้คำสั่งเดียว คุณก็สามารถตั้งค่า vLLM Server ได้อย่างรวดเร็ว บทความนี้จะแนะนำขั้นตอนการตั้งค่าและใช้งาน vLLM Server บน Hugging Face Jobs พร้อมเคล็ดลับเพิ่มเติม

สิ่งที่ต้องเตรียมก่อนเริ่มต้น 🛠️

ก่อนจะเริ่มใช้งาน คุณต้องเตรียมสิ่งเหล่านี้ให้พร้อม:

  • วิธีการชำระเงิน หรือ เครดิตคงเหลือ: Hugging Face Jobs คิดค่าบริการตามการใช้งานฮาร์ดแวร์เป็นนาที ดังนั้นจึงต้องมีวิธีการชำระเงินที่ผูกไว้ หรือมีเครดิตเพียงพอ
  • ติดตั้ง huggingfacehub เวอร์ชันล่าสุด: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารี huggingfacehub เวอร์ชัน 1.20.0 ขึ้นไป โดยใช้คำสั่ง:
    pip install -U "huggingface_hub>=1.20.0"
  • เข้าสู่ระบบ Hugging Face: ล็อกอินเข้าสู่ระบบ Hugging Face ในเครื่องของคุณด้วยคำสั่ง:
    hf auth login

รัน vLLM Server ด้วยคำสั่งเดียว 💨

คำสั่ง hf jobs run เปรียบเสมือน docker run สำหรับโครงสร้างพื้นฐานของ Hugging Face เราจะใช้ Image vllm/vllm-openai อย่างเป็นทางการ ขอ GPU ด้วย --flavor และเปิดพอร์ตของ vLLM ด้วย --expose:

hf jobs run --image vllm/vllm-openai \
--flavor \
--expose 8000
  • --expose 8000 จะทำการส่งพอร์ต 8000 ของคอนเทนเนอร์ผ่านพร็อกซีของ Hugging Face Jobs (สำหรับรายละเอียดเพิ่มเติม โปรดดูคู่มือ Serve Models)
  • หลังจากรันคำสั่ง ระบบจะแสดง URL ที่คุณสามารถเข้าถึงเซิร์ฟเวอร์ได้ โดยจะมี Job ID ปรากฏขึ้น เช่น 6a381ca1953ed90bfb947332 ให้จด Job ID นี้ไว้ เพราะเราจะนำไปใช้ต่อ

รอสักครู่เพื่อให้โมเดลดาวน์โหลดและเริ่มต้นทำงาน เมื่อข้อความในล็อกแสดง Application startup complete แสดงว่าเซิร์ฟเวอร์ของคุณพร้อมใช้งานแล้ว

การเรียกใช้งานจากที่ไหนก็ได้ 🌐

vLLM รองรับ OpenAI API ดังนั้นทุกคำขอจะต้องใช้ HF token ของคุณเป็น Bearer token วิธีที่รวดเร็วที่สุดในการทดสอบคือการใช้ curl:

curl ขอบคุณ แหล่งข้อมูล
https://--8000.hf.jobs/v1/chat/completions \
-H "Authorization: Bearer $(hf auth token)" \
-H "Content-Type: application/json" \
-d '{
"model": "your-model-name",
"messages": [
{"role": "user", "content": "Hello! How can I assist you today? 😊"}
]
}'

คุณจะได้รับผลลัพธ์เป็น JSON รูปแบบ OpenAI-style โดยส่วน choices[0].message.content จะมีข้อความตอบกลับ

หรือจะใช้ Python โดยชี้ OpenAI client ไปที่ URL ที่เปิดเผยและส่ง token เป็น API key ก็ได้:

from openai import OpenAI

client = OpenAI(
base_url="ขอบคุณ แหล่งข้อมูล
https://--8000.hf.jobs/v1";,
api_key="$(hf auth token)"
)

completion = client.chat.completions.create(
model="your-model-name",
messages=[
{"role": "user", "content": "Hello! How can I assist you today? 😊"}
]
)

print(completion.choices[0].message.content)

ตรวจสอบสถานะเบื้องต้น 🔍

ก่อนเริ่มใช้งานจริง คุณสามารถตรวจสอบว่าเซิร์ฟเวอร์ทำงานได้หรือไม่ด้วยคำสั่ง:

curl ขอบคุณ แหล่งข้อมูล
https://--8000.hf.jobs/v1/models -H "Authorization: Bearer $(hf auth token)"

คำสั่งนี้ควรจะแสดงรายชื่อโมเดลที่เซิร์ฟเวอร์รองรับ

ข้อควรจำ: Endpoint นี้มีการควบคุมการเข้าถึง (gated) ไม่ใช่แบบสาธารณะ ทุกคำขอจะต้องมี HF token ที่มีสิทธิ์อ่านใน namespace ของ job นั้น การเข้าผ่านเบราว์เซอร์ธรรมดาจะถูกปฏิเสธ พร็อกซีของ Jobs จะทำหน้าที่เป็นประตู API โดยการเข้าถึงจะถูกจำกัดไว้เฉพาะคุณและองค์กรของคุณเท่านั้น ซึ่งเหมาะสำหรับการใช้งานส่วนตัว แต่ควรจัดการ URL นี้อย่างระมัดระวัง และไม่ควรแชร์ URL หรือ token ไปยังที่ที่ไม่น่าเชื่อถือ หากต้องการการเข้าถึงที่ละเอียดกว่าหรือแบบสาธารณะ ควรมี Gateway ที่เหมาะสม หรือพิจารณาใช้ Inference Endpoints

การปิดเซิร์ฟเวอร์เพื่อประหยัดค่าใช้จ่าย 💰

Jobs จะถูกคิดค่าบริการตามวินาที ดังนั้นควรปิดเซิร์ฟเวอร์เมื่อใช้งานเสร็จสิ้น:

hf jobs cancel 

การตั้งค่า --timeout เป็นเพียงมาตรการป้องกัน (จะหยุดอัตโนมัติ) แต่การยกเลิกโดยตรงจะช่วยประหยัดค่าใช้จ่ายได้มากกว่า ตัวอย่างเช่น GPU a10g-large มีค่าใช้จ่ายประมาณ 1.50 ดอลลาร์สหรัฐฯ ต่อชั่วโมง ตรวจสอบรายการราคาเต็มได้ที่ hf jobs hardware และเลือกขนาด GPU ที่เหมาะสมกับโมเดลของคุณ

การใช้งานโมเดลขนาดใหญ่ขึ้น 🐘

คำสั่งเดียวกันนี้สามารถปรับใช้กับโมเดลที่ใหญ่ขึ้นได้ เพียงเลือก --flavor ที่มี GPU มากขึ้น และกำหนดให้ vLLM ทำการแบ่งโมเดลข้าม GPU ด้วย --tensor-parallel-size ตัวอย่างเช่น โมเดล Qwen3.5 mixture-of-experts ขนาด 122B บน GPU 2 ตัวแบบ H200:

hf jobs run --image vllm/vllm-openai \
--flavor h200x2 \
--expose 8000 \
--tensor-parallel-size 2 \
--model Qwen3.5-122B
  • --tensor-parallel-size ควรตรงกับจำนวน GPU ที่เลือกใน flavor (เช่น h200x2 → 2, h200x8 → 8)
  • รัน hf jobs hardware เพื่อดูฮาร์ดแวร์ที่มี และกำหนด --timeout ให้ยาวขึ้นสำหรับโมเดลขนาดใหญ่ เพราะใช้เวลาในการดาวน์โหลดและโหลดนานกว่า
  • สำหรับโมเดลขนาดใหญ่ GPU ตระกูล H200 มักจะคุ้มค่าที่สุด

พารามิเตอร์ --max-model-len 32768 --max-num-seqs 256 เป็นค่าเฉพาะสำหรับโมเดล Qwen3.5-122B ซึ่งเป็นสถาปัตยกรรมแบบ Mamba/attention ที่มี context length เริ่มต้น 256K โทเค็น ซึ่งอาจไม่พอสำหรับค่าเริ่มต้นของ vLLM การจำกัดความยาว context และจำนวน sequence พร้อมกันจะช่วยให้อยู่ในขอบเขตหน่วยความจำของ GPU หากโมเดลมีปัญหาเกี่ยวกับหน่วยความจำ (out-of-memory) หรือ cache-block error การลดค่าสองตัวนี้ลงมักเป็นวิธีแก้ปัญหาแรก

ส่วนอื่น ๆ เช่น URL ที่เปิดเผย, OpenAI client, และการยืนยันตัวตนด้วย token ยังคงเหมือนเดิม

การสนทนากับโมเดลผ่าน UI 💬

หากคุณต้องการหน้าต่างแชทแทนการใช้ curl ลองใช้ Gradio เพียงไม่กี่บรรทัด โดยชี้ไปยัง endpoint เดิม เพิ่ม --reasoning-parser deepseek_r1 ในคำสั่ง vllm serve เพื่อให้การคิดวิเคราะห์ของ Qwen3 แสดงผลเป็นฟิลด์แยกต่างหาก (ไม่จำเป็น แต่มีประโยชน์) จากนั้นรันโค้ดนี้ในเครื่องของคุณ (คุณจะต้องใช้ Job ID):

import gradio as gr
import requests
import os

job_id = os.environ.get("JOB_ID", "")
# แทนที่ด้วย Job ID ของคุณ
base_url = f"ขอบคุณ แหล่งข้อมูล
https://{job_id}--8000.hf.jobs/v1";
hf_token = os.environ.get("HF_TOKEN", "$(hf auth token)")
# หรือใส่ token ของคุณโดยตรง

def chat_with_vllm(message, history):
history = history or []
messages = [{"role": "user", "content": message}]
for user_msg, assistant_msg in history:
messages.append({"role": "user", "content": user_msg})
messages.append({"role": "assistant", "content": assistant_msg})

response = requests.post(
f"{base_url}/chat/completions",
headers={
"Authorization": f"Bearer {hf_token}",
"Content-Type": "application/json",
},
json={
"model": "Qwen3.5-122B",
# หรือชื่อโมเดลของคุณ
"messages": messages,
"stream": False,
# ตั้งค่าเป็น True หากต้องการ stream
},
)
response.raise_for_status()
response_json = response.json()
assistant_message = response_json["choices"][0]["message"]["content"]
return assistant_message

with gr.Blocks() as demo:
gr.Markdown("
# Chat with vLLM")
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Your Message")
clear = gr.Button("Clear")

def user(user_message, history):
return "", history + [[user_message, None]]

msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
lambda history: chat_with_vllm(history[-1][0], history[:-1]),
# ส่งข้อความล่าสุดและประวัติ
chatbot,
[msg, chatbot],
)
clear.click(lambda _: None, None, chatbot, queue=False)

demo.launch(server_port=7860)

รันโค้ดนี้ เปิด http://127.0.0.1:7860 แล้วเริ่มแชทได้เลย การคิดวิเคราะห์จะแสดงในแผงที่ยุบได้ ส่วนคำตอบจะอยู่ด้านล่าง

การเข้าถึงเซิร์ฟเวอร์ผ่าน SSH 💻

ต้องการดีบั๊กปัญหาการเริ่มต้น, ตรวจสอบหน่วยความจำ GPU, หรือดูล็อกแบบเรียลไทม์หรือไม่? คุณสามารถเปิด Shell เข้าไปยัง Job ที่กำลังทำงานได้ โดยเริ่มด้วย --ssh และตรวจสอบให้แน่ใจว่าได้ลงทะเบียน Public key ของคุณที่ huggingface.co/settings/keys:

hf jobs run --image vllm/vllm-openai \
--flavor \
--expose 8000 \
--ssh

จากนั้นเชื่อมต่อด้วย Job ID:

ssh [email protected]

ตอนนี้คุณจะอยู่ภายในคอนเทนเนอร์ สามารถรัน nvidia-smi, ตรวจสอบ process, หรือเข้าถึงโมเดลได้โดยตรง ทำให้การดีบั๊กและการมอนิเตอร์ง่ายขึ้นมาก การรองรับ SSH ต้องการ huggingface_hub >= 1.20.0

ใช้เป็น Backend สำหรับ Coding Agent ด้วย Pi 🤖

Endpoint เดียวกันนี้สามารถใช้เป็น Backend สำหรับ Coding Agent ได้ Pi เป็นเครื่องมือจัดการ Agent ที่ทำงานได้กับทุกผู้ให้บริการ คุณสามารถชี้ Pi ไปยัง Job ของคุณ และคุณจะได้ Agent ประเภท Read/Write/Edit/Bash ที่ทำงานบนโมเดลที่คุณโฮสต์เอง

สิ่งแรกที่ต้องตั้งค่า: Agent จะสั่งงานโมเดลผ่าน Tool Calls ซึ่ง vLLM จะยอมรับก็ต่อเมื่อเซิร์ฟเวอร์ถูกเปิดใช้งานด้วย Tool Calling แล้ว ดังนั้นให้รันใหม่ด้วย --enable-auto-tool-choice และ --tool-call-parser ที่ตรงกับตระกูลโมเดล (เช่น hermes สำหรับ Qwen3) Agent ยังได้ประโยชน์จากโมเดลที่แข็งแกร่งกว่า ดังนั้นนี่เป็นโอกาสที่ดีในการนำโมเดลที่ใหญ่ขึ้นมาใช้:

hf jobs run --image vllm/vllm-openai \
--flavor h200x2 \
--expose 8000 \
--tensor-parallel-size 2 \
--model Qwen3.5-122B \
--enable-auto-tool-choice \
--tool-call-parser hermes

จากนั้นเพิ่ม Job เป็น Custom Provider ใน ~/.pi/agent/models.json:

{
"providers": [
{
"name": "My vLLM Job",
"model_url": "ขอบคุณ แหล่งข้อมูล
https://--8000

ขอบคุณ แหล่งข้อมูล
https://huggingface.co/blog/vllm-jobs

รัน vLLM Server บน Hugging Face Jobs ง่าย ๆ ในคำสั่งเดียว 🚀การรันโมเดลภาษาขนาดใหญ่ (LLM) สำหรับการทดสอบ ประเมินผล หรือการสร้างข้อความแบบกลุ่ม (batch generation) อาจดูซับซ้อน แต่ Hugging Face Jobs ช่วยให้กระบวนการนี้ง่ายขึ้นอย่างไม่น่าเชื่อ เพียงใช้คำสั่งเดียว คุณก็สามารถตั้งค่า vLLM Server ได้อย่างรวดเร็ว บทความนี้จะแนะนำขั้นตอนการตั้งค่าและใช้งาน vLLM Server บน Hugging Face Jobs พร้อมเคล็ดลับเพิ่มเติมสิ่งที่ต้องเตรียมก่อนเริ่มต้น 🛠️ก่อนจะเริ่มใช้งาน คุณต้องเตรียมสิ่งเหล่านี้ให้พร้อม:วิธีการชำระเงิน หรือ เครดิตคงเหลือ: Hugging Face Jobs คิดค่าบริการตามการใช้งานฮาร์ดแวร์เป็นนาที ดังนั้นจึงต้องมีวิธีการชำระเงินที่ผูกไว้ หรือมีเครดิตเพียงพอติดตั้ง huggingfacehub เวอร์ชันล่าสุด: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารี huggingfacehub เวอร์ชัน 1.20.0 ขึ้นไป โดยใช้คำสั่ง: pip install -U "huggingface_hub>=1.20.0"เข้าสู่ระบบ Hugging Face: ล็อกอินเข้าสู่ระบบ Hugging Face ในเครื่องของคุณด้วยคำสั่ง: hf auth loginรัน vLLM Server ด้วยคำสั่งเดียว 💨คำสั่ง hf jobs run เปรียบเสมือน docker run สำหรับโครงสร้างพื้นฐานของ Hugging Face เราจะใช้ Image vllm/vllm-openai อย่างเป็นทางการ ขอ GPU ด้วย --flavor และเปิดพอร์ตของ vLLM ด้วย --expose:hf jobs run --image vllm/vllm-openai \ --flavor \ --expose 8000--expose 8000 จะทำการส่งพอร์ต 8000 ของคอนเทนเนอร์ผ่านพร็อกซีของ Hugging Face Jobs (สำหรับรายละเอียดเพิ่มเติม โปรดดูคู่มือ Serve Models)หลังจากรันคำสั่ง ระบบจะแสดง URL ที่คุณสามารถเข้าถึงเซิร์ฟเวอร์ได้ โดยจะมี Job ID ปรากฏขึ้น เช่น 6a381ca1953ed90bfb947332 ให้จด Job ID นี้ไว้ เพราะเราจะนำไปใช้ต่อรอสักครู่เพื่อให้โมเดลดาวน์โหลดและเริ่มต้นทำงาน เมื่อข้อความในล็อกแสดง Application startup complete แสดงว่าเซิร์ฟเวอร์ของคุณพร้อมใช้งานแล้วการเรียกใช้งานจากที่ไหนก็ได้ 🌐vLLM รองรับ OpenAI API ดังนั้นทุกคำขอจะต้องใช้ HF token ของคุณเป็น Bearer token วิธีที่รวดเร็วที่สุดในการทดสอบคือการใช้ curl:curl https://--8000.hf.jobs/v1/chat/completions \ -H "Authorization: Bearer $(hf auth token)" \ -H "Content-Type: application/json" \ -d '{ "model": "your-model-name", "messages": [ {"role": "user", "content": "Hello! How can I assist you today? 😊"} ] }'คุณจะได้รับผลลัพธ์เป็น JSON รูปแบบ OpenAI-style โดยส่วน choices[0].message.content จะมีข้อความตอบกลับหรือจะใช้ Python โดยชี้ OpenAI client ไปที่ URL ที่เปิดเผยและส่ง token เป็น API key ก็ได้:from openai import OpenAI client = OpenAI( base_url="https://--8000.hf.jobs/v1", api_key="$(hf auth token)" ) completion = client.chat.completions.create( model="your-model-name", messages=[ {"role": "user", "content": "Hello! How can I assist you today? 😊"} ] ) print(completion.choices[0].message.content)ตรวจสอบสถานะเบื้องต้น 🔍ก่อนเริ่มใช้งานจริง คุณสามารถตรวจสอบว่าเซิร์ฟเวอร์ทำงานได้หรือไม่ด้วยคำสั่ง:curl https://--8000.hf.jobs/v1/models -H "Authorization: Bearer $(hf auth token)"คำสั่งนี้ควรจะแสดงรายชื่อโมเดลที่เซิร์ฟเวอร์รองรับข้อควรจำ: Endpoint นี้มีการควบคุมการเข้าถึง (gated) ไม่ใช่แบบสาธารณะ ทุกคำขอจะต้องมี HF token ที่มีสิทธิ์อ่านใน namespace ของ job นั้น การเข้าผ่านเบราว์เซอร์ธรรมดาจะถูกปฏิเสธ พร็อกซีของ Jobs จะทำหน้าที่เป็นประตู API โดยการเข้าถึงจะถูกจำกัดไว้เฉพาะคุณและองค์กรของคุณเท่านั้น ซึ่งเหมาะสำหรับการใช้งานส่วนตัว แต่ควรจัดการ URL นี้อย่างระมัดระวัง และไม่ควรแชร์ URL หรือ token ไปยังที่ที่ไม่น่าเชื่อถือ หากต้องการการเข้าถึงที่ละเอียดกว่าหรือแบบสาธารณะ ควรมี Gateway ที่เหมาะสม หรือพิจารณาใช้ Inference Endpointsการปิดเซิร์ฟเวอร์เพื่อประหยัดค่าใช้จ่าย 💰Jobs จะถูกคิดค่าบริการตามวินาที ดังนั้นควรปิดเซิร์ฟเวอร์เมื่อใช้งานเสร็จสิ้น:hf jobs cancel การตั้งค่า --timeout เป็นเพียงมาตรการป้องกัน (จะหยุดอัตโนมัติ) แต่การยกเลิกโดยตรงจะช่วยประหยัดค่าใช้จ่ายได้มากกว่า ตัวอย่างเช่น GPU a10g-large มีค่าใช้จ่ายประมาณ 1.50 ดอลลาร์สหรัฐฯ ต่อชั่วโมง ตรวจสอบรายการราคาเต็มได้ที่ hf jobs hardware และเลือกขนาด GPU ที่เหมาะสมกับโมเดลของคุณการใช้งานโมเดลขนาดใหญ่ขึ้น 🐘คำสั่งเดียวกันนี้สามารถปรับใช้กับโมเดลที่ใหญ่ขึ้นได้ เพียงเลือก --flavor ที่มี GPU มากขึ้น และกำหนดให้ vLLM ทำการแบ่งโมเดลข้าม GPU ด้วย --tensor-parallel-size ตัวอย่างเช่น โมเดล Qwen3.5 mixture-of-experts ขนาด 122B บน GPU 2 ตัวแบบ H200:hf jobs run --image vllm/vllm-openai \ --flavor h200x2 \ --expose 8000 \ --tensor-parallel-size 2 \ --model Qwen3.5-122B--tensor-parallel-size ควรตรงกับจำนวน GPU ที่เลือกใน flavor (เช่น h200x2 → 2, h200x8 → 8)รัน hf jobs hardware เพื่อดูฮาร์ดแวร์ที่มี และกำหนด --timeout ให้ยาวขึ้นสำหรับโมเดลขนาดใหญ่ เพราะใช้เวลาในการดาวน์โหลดและโหลดนานกว่าสำหรับโมเดลขนาดใหญ่ GPU ตระกูล H200 มักจะคุ้มค่าที่สุดพารามิเตอร์ --max-model-len 32768 --max-num-seqs 256 เป็นค่าเฉพาะสำหรับโมเดล Qwen3.5-122B ซึ่งเป็นสถาปัตยกรรมแบบ Mamba/attention ที่มี context length เริ่มต้น 256K โทเค็น ซึ่งอาจไม่พอสำหรับค่าเริ่มต้นของ vLLM การจำกัดความยาว context และจำนวน sequence พร้อมกันจะช่วยให้อยู่ในขอบเขตหน่วยความจำของ GPU หากโมเดลมีปัญหาเกี่ยวกับหน่วยความจำ (out-of-memory) หรือ cache-block error การลดค่าสองตัวนี้ลงมักเป็นวิธีแก้ปัญหาแรกส่วนอื่น ๆ เช่น URL ที่เปิดเผย, OpenAI client, และการยืนยันตัวตนด้วย token ยังคงเหมือนเดิมการสนทนากับโมเดลผ่าน UI 💬หากคุณต้องการหน้าต่างแชทแทนการใช้ curl ลองใช้ Gradio เพียงไม่กี่บรรทัด โดยชี้ไปยัง endpoint เดิม เพิ่ม --reasoning-parser deepseek_r1 ในคำสั่ง vllm serve เพื่อให้การคิดวิเคราะห์ของ Qwen3 แสดงผลเป็นฟิลด์แยกต่างหาก (ไม่จำเป็น แต่มีประโยชน์) จากนั้นรันโค้ดนี้ในเครื่องของคุณ (คุณจะต้องใช้ Job ID):import gradio as gr import requests import os job_id = os.environ.get("JOB_ID", "") # แทนที่ด้วย Job ID ของคุณ base_url = f"https://{job_id}--8000.hf.jobs/v1" hf_token = os.environ.get("HF_TOKEN", "$(hf auth token)") # หรือใส่ token ของคุณโดยตรง def chat_with_vllm(message, history): history = history or [] messages = [{"role": "user", "content": message}] for user_msg, assistant_msg in history: messages.append({"role": "user", "content": user_msg}) messages.append({"role": "assistant", "content": assistant_msg}) response = requests.post( f"{base_url}/chat/completions", headers={ "Authorization": f"Bearer {hf_token}", "Content-Type": "application/json", }, json={ "model": "Qwen3.5-122B", # หรือชื่อโมเดลของคุณ "messages": messages, "stream": False, # ตั้งค่าเป็น True หากต้องการ stream }, ) response.raise_for_status() response_json = response.json() assistant_message = response_json["choices"][0]["message"]["content"] return assistant_message with gr.Blocks() as demo: gr.Markdown(" # Chat with vLLM") chatbot = gr.Chatbot() msg = gr.Textbox(label="Your Message") clear = gr.Button("Clear") def user(user_message, history): return "", history + [[user_message, None]] msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( lambda history: chat_with_vllm(history[-1][0], history[:-1]), # ส่งข้อความล่าสุดและประวัติ chatbot, [msg, chatbot], ) clear.click(lambda _: None, None, chatbot, queue=False) demo.launch(server_port=7860)รันโค้ดนี้ เปิด http://127.0.0.1:7860 แล้วเริ่มแชทได้เลย การคิดวิเคราะห์จะแสดงในแผงที่ยุบได้ ส่วนคำตอบจะอยู่ด้านล่างการเข้าถึงเซิร์ฟเวอร์ผ่าน SSH 💻ต้องการดีบั๊กปัญหาการเริ่มต้น, ตรวจสอบหน่วยความจำ GPU, หรือดูล็อกแบบเรียลไทม์หรือไม่? คุณสามารถเปิด Shell เข้าไปยัง Job ที่กำลังทำงานได้ โดยเริ่มด้วย --ssh และตรวจสอบให้แน่ใจว่าได้ลงทะเบียน Public key ของคุณที่ huggingface.co/settings/keys:hf jobs run --image vllm/vllm-openai \ --flavor \ --expose 8000 \ --sshจากนั้นเชื่อมต่อด้วย Job ID:ssh [email protected]ตอนนี้คุณจะอยู่ภายในคอนเทนเนอร์ สามารถรัน nvidia-smi, ตรวจสอบ process, หรือเข้าถึงโมเดลได้โดยตรง ทำให้การดีบั๊กและการมอนิเตอร์ง่ายขึ้นมาก การรองรับ SSH ต้องการ huggingface_hub >= 1.20.0ใช้เป็น Backend สำหรับ Coding Agent ด้วย Pi 🤖Endpoint เดียวกันนี้สามารถใช้เป็น Backend สำหรับ Coding Agent ได้ Pi เป็นเครื่องมือจัดการ Agent ที่ทำงานได้กับทุกผู้ให้บริการ คุณสามารถชี้ Pi ไปยัง Job ของคุณ และคุณจะได้ Agent ประเภท Read/Write/Edit/Bash ที่ทำงานบนโมเดลที่คุณโฮสต์เองสิ่งแรกที่ต้องตั้งค่า: Agent จะสั่งงานโมเดลผ่าน Tool Calls ซึ่ง vLLM จะยอมรับก็ต่อเมื่อเซิร์ฟเวอร์ถูกเปิดใช้งานด้วย Tool Calling แล้ว ดังนั้นให้รันใหม่ด้วย --enable-auto-tool-choice และ --tool-call-parser ที่ตรงกับตระกูลโมเดล (เช่น hermes สำหรับ Qwen3) Agent ยังได้ประโยชน์จากโมเดลที่แข็งแกร่งกว่า ดังนั้นนี่เป็นโอกาสที่ดีในการนำโมเดลที่ใหญ่ขึ้นมาใช้:hf jobs run --image vllm/vllm-openai \ --flavor h200x2 \ --expose 8000 \ --tensor-parallel-size 2 \ --model Qwen3.5-122B \ --enable-auto-tool-choice \ --tool-call-parser hermesจากนั้นเพิ่ม Job เป็น Custom Provider ใน ~/.pi/agent/models.json:{ "providers": [ { "name": "My vLLM Job", "model_url": "https://--8000https://huggingface.co/blog/vllm-jobs
Shared content
HUGGINGFACE.CO
Run a vLLM Server on HF Jobs in One Command
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
4 Commentarios 0 Acciones 829 Views 0 Vista previa