ในตอนที่แล้วเราได้ทำความรู้จักกับ Qwen และได้ลองใช้ DashScope API กันไปแล้ว ซึ่งผมเชื่อว่าหลายท่านคงจะเห็นถึงง่ายของการใช้ AI แบบ SaaS แล้ว แต่ในโลกของการทำ AI Solution จริง ๆ เรามักจะต้องเจอกับโจทย์ที่ซับซ้อนกว่านั้นครับ เช่น เรื่องของ Compliance, Data Security, หรือ Budget สำหรับ Workload ขนาดมหาศาล
วันนี้ผมจะพาไปเจาะลึกในโหมด Hardcore ที่สาย AI Engineer ต้องชอบ กับการ Deploy โมเดล Qwen เองบน Alibaba Cloud และสาธิตการเรียกใช้งานแบบ Multi-Cloud ผ่าน Google Colab Enterprise เพื่อให้เห็นภาพที่ครบวงจรครับ!
SaaS vs Self-Hosted: เมื่อไหร่ที่เราควร Deploy AI เอง?
ก่อนที่เราจะไปลงมือทำ ผมขอชวนคุยถึงข้อดีข้อเสียของการ Deploy โมเดล AI เอง (Self-Hosted) เมื่อเทียบกับการใช้แบบ SaaS (ผ่าน API อย่าง DashScope) เพื่อให้ผู้อ่านตัดสินใจได้ว่าวิธีไหนเหมาะกับโจทย์ของตัวเองครับ

มุมมองของผม: การใช้ API สะดวกเหมือนการสั่งกาแฟพร้อมดื่ม แต่ การ Deploy เองเหมือนการสร้างโรงคั่วกาแฟของเราเอง ที่เราสามารถคุมรสชาติและต้นทุนได้ทั้งหมดนั่นเองครับ
รู้จักกับ PAI (Platform for AI) บน Alibaba Cloud
ก่อนจะติดตั้ง Qwen แบบ Production เรามาทำความรู้จักกับเครื่องมือหลักที่เราจะใช้บน Alibaba Cloud กันก่อนครับ นั่นคือ PAI (Platform for AI) ซึ่งเปรียบดั่งสนามเด็กเล่นของ AI Engineer
PAI คือ End-to-End Platform สำหรับงานด้าน Machine Learning และ AI ของ Alibaba Cloud ครับ มันคล้ายกับ Vertex AI ของ Google Cloud ตรงที่เป็นศูนย์รวมเครื่องมือตั้งแต่วางแผน (Data Preparation) จนถึงการนำโมเดลไปใช้งานจริง (Deployment)

บน PAI เราสามารถใช้ Service หลักๆ ในการจัดการ LLM ได้ดังนี้:
- PAI-DSW (Data Science Workshop): คือ Notebook Environment สำหรับการทดลอง การ Fine-tune
- PAI-EAS (Elastic Algorithm Service): คือ Service สำหรับการ Deploy Model และเปิด Real-time Endpoint ที่มีความเสถียรและสามารถ Scale ได้

PAI-DSW หน้าตาเป็น Jupyter Lab รุ่น Mod สไตล์ Aliyun เปรียบดั่ง Vertex AI Workbench

PAI-EAS สำหรับ Inference ใช้ Node แบบโหดๆ เลย เปรียบดั่ง Vertex AI Prediction
ภาคปฏิบัติ: ติดตั้ง Qwen บน Alibaba Cloud
เป้าหมายของเราคือการนำโมเดล Qwen มาติดตั้งบน Virtual Machine ที่มี GPU เพื่อให้รัน Inference ได้อย่างรวดเร็ว

PAI มี Model Gallery ที่รวบรวมโมเดลยอดนิยม รวมถึง Qwen (Open-Source) เวอร์ชันต่าง ๆ ไว้ให้เราเลือกใช้ได้ทันที ไม่ต้องเสียเวลา Clone หรือติดตั้ง Dependencies ด้วยตัวเองครับ

ตัวอย่างนี้ลองเลือก Qwen3–14B เมื่อเข้ามาดูรายละเอียดจะมีปุ่มให้ Deploy หรือ Train เพิ่มได้ด้วยครับ บางโมเดลอาจจะ Support แค่ Deploy อย่างเดียวก็ได้ครับ

งั้นเรามาลอง Deploy ไปที่ EAS พื่อเปิด REST API Endpoint เลยแล้วกัน กดปุ่ม Deploy เลยครับ

ผมเลือกเป็น Inference Engine เป็น vLLM ด้วยความคุ้นเคยครับ คือมันไม่ได้มีตัวไหนดีที่สุด เพียงแต่ขึ้นอยู่กับ Use Cases เช่น ถ้าต้องการความเสถียร, troughput สูง มี community ใหญ่ให้โพสต์ถาม ก็เป็น vLLM
แต่ถ้าแบบต้องการ Latency ต่ำ (Time-to-First-Token) คือเน้นเป็นแชทคุยหลายรอบ (Multi-turn Conversation) หรือแบบ Setup Multi-GPU เอง เขาบอกว่าง่ายกว่า vLLM ก็อาจใช้ SGLang ครับ ซึ่งโลกของความเป็นจริงเน้นความเร็ว เราคงไม่ติดตั้งบน server เอง เชื่อม cluster เอง ผมว่าใช้เป็น Service ติดตั้งแบบนี้ดีกว่าครับ เอาเวลาไปโฟกัสที่การพัฒนา AI ดีกว่างาน Operation

ทีนี้ตรง Resource Type จะมีเครื่องมากมายให้เลือกตามความโหดได้เลยครับ

มีให้ใช้ทั้ง NVIDIA L20 และ NVIDIA H20–3e ซึ่งตัว H20–3e ก็จะเป็นรุ่นปรับสเปกให้เหมาะสมกับตลาดจีน ซึ่ง GPU แต่ละตัวจะคุยกันเร็วมากครับ เทียบโดยรวม L20 ก็ดีครับแต่ถ้า Training สถาปัตยกรรม Hopper และหน่วยความจำ HBM บน H20 เหนือกว่าครับ
แต่ก็ต้องดูต่อว่า NVIDIA จะสามารถส่งออกชิปตระกูล H-Series ไปจีนได้อีกหรือไม่? ในสงครามเทคโนโลยีครับ
นอกเรื่องมาตั้งไกล สรุปผมเลือกเป็น ml.gu8tea.1.6xlarge นะครับแล้วกด Deploy ล่างสุดได้เลย จากนั้นกลับไปที่ Model Gallery แล้วเลือก Job Managment ครับจะมี Status ของการ deploy อยู่

วิธี Deploy นี้ รวดเร็ว และ เป็นมาตรฐาน มากกว่าการตั้ง ECS และใช้ GPU ด้วยตัวเองครับ
เมื่อ Deploy เสร็จเครื่องขึ้นเรียบร้อยก็เข้าไปเอา Call Information มาได้เลยครับ

โดย Internet Endpoint ใช้สำหรับเรียกผ่าน Internet ข้างนอก ส่วน VPC Endpoint ใช้ภายใน Aliyun ครับที่ได้อยู่ในวง Network ที่กำหนด ส่วน Token ใช้ในการ Authentication ครับ
เปลี่ยนธุรกิจคุณให้ล้ำหน้าด้วย AI ให้เต็มศักยภาพ !
ทีมผู้เชี่ยวชาญของเราพร้อมให้คำปรึกษาและออกแบบโซลูชันที่ตอบโจทย์ที่สุดสำหรับองค์กรของคุณ
ทดสอบแบบยิง API จาก Terminal
curl -X GET \
-H "Authorization: <EAS_TOKEN>" \
<EAS_ENDPOINT>/openapi.json
ทดสอบเรียกจาก Terminal บน Mac OSX เพื่อเอา OpenAPI Spec มาสามารถใช้งานได้ครับ

เอาไปเปิดบน Swagger ก็จะเห็นรูปแบบว่าเรา Call ยังไงได้บ้างครับ
ทีนี้ลอง list model ออกมาดูบ้าง
curl -X GET \
-H "Authorization: <EAS_TOKEN>" \
<EAS_ENDPOINT>/v1/models{
"object": "list",
"data": [
{
"id": "Qwen3-14B",
"object": "model",
"created": 1760003191,
"owned_by": "vllm",
"root": "/model/Qwen3-14B",
"parent": null,
"max_model_len": 32768,
"permission": [
{
"id": "modelperm",
"object": "model_permission",
"created": 1760003191,
"allow_create_engine": false,
"allow_sampling": true,
"allow_logprobs": true,
"allow_search_indices": false,
"allow_view": true,
"allow_fine_tuning": false,
"organization": "*",
"group": null,
"is_blocking": false
}
]
}
]
}ต่อไปลอง Inference กันเลย
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: <EAS_TOKEN>" \
-d '{
"model": "Qwen3-14B",
"prompt": "Strawberry มี r กี่ตัว",
"max_tokens": 1280
}' \
<EAS_ENDPOINT>/v1/completions
จัด JSON ให้สวยหน่อยเรียกว่าตอบได้ดีเลยครับ
{
"id": "cmpl",
"object": "text_completion",
"created": 1760003445,
"model": "Qwen3-14B",
"choices": [
{
"index": 0,
"text": "? คำว่า \"Strawberry\" มีตัวอักษร \"r\" กี่ตัว?\n\nOkay, let me figure out how many \"r\" letters are in the word \"Strawberry.\" First, I need to write down the word and check each letter one by one. Let's start by spelling it out: S-T-R-A-W-B-E-R-R-Y. Now, I'll go through each letter step by step.\n\nThe first letter is S, which is not an \"r.\" Next is T, also not an \"r.\" The third letter is R, so that's one \"r.\" Then comes A, W, B, E—none of those are \"r.\" The next letter is R again, so that's the second \"r.\" Following that is another R, making it the third \"r.\" Finally, Y at the end, which isn't an \"r.\" \n\nWait, let me double-check to make sure I didn't miss any. Let's count again: S (1), T (2), R (3), A (4), W (5), B (6), E (7), R (8), R (9), Y (10). So the positions 3, 8, and 9 are \"r.\" That's three \"r\"s in total. Hmm, but sometimes when I count letters, I might miscount if there are consecutive letters. Let me verify once more. The word is S-T-R-A-W-B-E-R-R-Y. Breaking it down: STRAWBERRY. The \"berry\" part has two \"r\"s, and the first \"r\" is in \"straw.\" So yes, that's three \"r\"s. I think that's correct.\nคำตอบคือ 3 ตัว\n\n**คำตอบ**\nคำว่า \"Strawberry\" มีตัวอักษร \"r\" ทั้งหมด $\\boxed{3}$ ตัว\n</think>\n\nคำว่า \"Strawberry\" มีตัวอักษร \"r\" ทั้งหมด $\\boxed{3}$ ตัว",
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"prompt_logprobs": null
}
],
"usage": {
"prompt_tokens": 10,
"total_tokens": 453,
"completion_tokens": 443,
"prompt_tokens_details": null
},
"kv_transfer_params": null
}มายิง API จาก Colab Enterprise ด้วย Python กัน
ตอนนี้เรามี Public Endpoint ของ Qwen ที่ Deploy บน Alibaba Cloud PAI เรียบร้อยแล้ว เราจะสาธิตให้เห็นว่าเราสามารถใช้เครื่องมือชั้นนำของ GCP อย่าง Google Colab Enterprise มาทดสอบ Model ที่อยู่บน Cloud อื่นได้อย่างไรกันนะครับ
ทำไมต้อง Colab Enterprise? เพราะ Colab Enterprise อยู่ใน Ecosystem ของ GCP และสามารถเชื่อมต่อกับทรัพยากรอื่น ๆ ได้อย่างปลอดภัย (เช่น VPC Peering หรือการจัดการ Authentication ที่ดีกว่า)
เคสนี้บน Colab เราจะต้องติดตั้ง openai lib นะครับ สามารถใช้กับ Qwen บน Aliyun ได้เลย
from openai import OpenAI
##### API Configuration #####
openai_api_key = "<EAS API KEY>"
openai_api_base = "<EAS API Endpoint>/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
print(model)
def main():
stream = True
chat_completion = client.chat.completions.create(
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Strawberry มี r กี่ตัว",
}
],
}
],
model=model,
max_completion_tokens=2048,
stream=stream,
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
if __name__ == "__main__":
main()
เมื่อรันบน Colab ดูก็ได้คำตอบที่สวยงามครับ เป็นบทความที่มีความเป็นลูกผสมจริงๆ ใช้แบบ Multi-Cloud ไว้คราวหน้าผมจะพาไปชม DSW (Data Science Workshop) นะครับ ว่าบน Aliyun เทพยังไงมี GPU โหดๆ ยังไงบ้างตามชมครับ
บทสรุป Multi-Cloud คือทางออกของ AI Solution
ผมเชื่อว่าตอนนี้ผู้อ่านคงจะเห็นภาพการใช้งาน Qwen ได้อย่างสมบูรณ์แล้ว ทั้งในรูปแบบ SaaS ที่รวดเร็ว และแบบ Self-Hosted ผ่าน PAI ที่ควบคุมได้ทั้งหมด อย่างที่ผมบอกว่า งานด้าน AI การเลือกเครื่องมือที่ใช่ในสถานการณ์ที่เหมาะสมคือเคล็ดลับความสำเร็จของ AI ครับ พันธมิตรทางธุรกิจก็เช่นกัน การเลือก Partner ที่ใช่ไปกับ Multi-Cloud Solutions ที่ Tangerine คือคำตอบที่ถูกต้องที่สุดครับ ทักผมได้เลย เดี๋ยวไปดูแลถึงที่เลยครับ

