เปิดหน้าเว็บเช่า GPU ครั้งแรก สิ่งแรกที่เห็นคือตารางราคา การ์ดรุ่นเดียวกันวางเรียงกันหลายเจ้า บางเจ้าถูกกว่าอีกเจ้าอย่างเห็นได้ชัด ตัวเลขในตารางเป็นตัวเลขเดียวที่มองเห็นตอนนั้น ก็เลยอยากกดเจ้าที่ถูกกว่า
แต่บิลคิดจากชั่วโมงที่เครื่องเปิดอยู่ทั้งหมด รวมเวลาที่นั่งรอดาวน์โหลด เวลาที่ติดตั้งแล้วพัง และเวลาที่เครื่องหายไปกลางทางโดยไม่เหลืออะไรไว้เลย
ราคาต่อชั่วโมงไม่เคยบอกว่าเงินส่วนไหนจ่ายไปเปล่าๆ ในงานเดียวกันนั้น เราเช่า RunPod 4 ครั้ง ไม่ได้ผลกลับมาเลย 2 ครั้ง ครั้งหนึ่งเครื่องหายไปเอง อีกครั้งเราพลาดเอง รันสคริปต์เก่าแล้วต้องหยุดหลัง 6 นาที 2 ครั้งนั้นกินเงินไปอย่างน้อย $0.57 จาก $4.65 ที่จ่ายไปทั้งงาน คิดเป็นราว 12% ส่วนเงินของครั้งที่เปิด 6 นาทีไม่ได้จดแยกไว้ อยากเห็นส่วนนี้ ให้รวมเงินทุกครั้งที่เช่าในงานเดียวกัน นับนาทีที่เครื่องเปิดแต่ไม่ได้งานด้วย แล้วหารด้วยจำนวนครั้งที่ได้ผลกลับมา
งานแรกบน RunPod กับวันแรกบน Vast ไม่ได้นับรวมในตัวเลขนี้ เราแยกเล่าไว้ข้างล่าง ในหัวข้อที่อธิบายวิธีคิด
Productize ใช้ทั้งสองเจ้าในช่วง 4 ถึง 7 ตุลาคม 2026 บิลทุกใบรวมกันได้ประมาณ $10.74 ตารางข้างล่างแยกให้ดูเท่าที่เราจดไว้
ช่วงที่ 1Pod คืออะไร ต่างจาก serverless ยังไง?
Pod คือเครื่อง GPU ที่เช่ามาใช้คนเดียวชั่วคราว เปิดแล้วเข้าไปสั่งงานได้เหมือนคอมเครื่องหนึ่ง RunPod กับ Vast คิดค่าเช่า pod เป็นรายวินาทีทั้งคู่ (อ้างอิง 1, อ้างอิง 6) เราเข้าเครื่องผ่าน ssh คือการพิมพ์คำสั่งเข้าไปที่เครื่องปลายทางจากคอมของเราเอง
ของที่ติดมากับ pod ตอนเปิดเรียกว่า image คือชุดโปรแกรมที่แพ็กไว้ล่วงหน้า มีระบบปฏิบัติการ ไดรเวอร์ และเครื่องมือที่งานต้องใช้ครบในก้อนเดียว image เลือกได้ที่หน้าเช่าเครื่องของแต่ละเจ้า พอเปิดเครื่อง ขั้นแรกคือดาวน์โหลด image ลงมา เรียกว่าการดึง image และระหว่างที่ดึงก็คิดเงินตลอด เลือก image ถูก ดึงเสร็จก็เริ่มงานได้เลย เลือกผิดก็ต้องติดตั้งเพิ่มเอง และทุกนาทีที่ติดตั้งก็คิดเงิน
เลิกใช้ pod ได้ 2 แบบ และต่างกันมาก
- หยุด (stop): ดับเครื่องไว้ ค่า GPU หยุดเดิน แต่ดิสก์ที่เก็บไว้ยังคิดค่าพื้นที่ต่อระหว่างที่หยุดเครื่อง ทั้งบน RunPod (อ้างอิง 5) และบน Vast (อ้างอิง 6)
- ลบ (delete): คืนเครื่องไปเลย ค่าเช่าจบหมด ไฟล์ที่ยังไม่ได้ดึงกลับมาเก็บก็หายตามไป
ไฟล์จะอยู่หรือหายขึ้นกับว่าวางไว้บนดิสก์แบบไหน เอกสารของ RunPod แยกดิสก์ไว้ 3 แบบ (อ้างอิง 11) container disk คือดิสก์ชั่วคราวที่ติดมากับเครื่อง หายทันทีที่หยุดเครื่อง volume disk คือดิสก์ของ pod เครื่องนั้นที่อยู่ตลอดอายุการเช่า หยุดเครื่องแล้วไฟล์ยังอยู่ แต่ลบ pod เมื่อไรไฟล์ก็หายไปด้วย ส่วน network volume คือดิสก์ที่เช่าแยกจาก pod ไฟล์อยู่ต่อทั้งตอนหยุดและตอนลบ pod
ถ้าเช่า RunPod แล้วจะเก็บผลไว้บนเครื่อง ให้เก็บบน network volume แต่ทางที่ปลอดภัยกว่าคือดึงกลับมาเก็บนอกเครื่องเป็นระยะ ใช้ scp หรือ rsync ก็พอ โปรแกรมพวกนี้เป็นของพื้นฐานไว้ก๊อปไฟล์ข้ามเครื่อง วิ่งผ่าน ssh ที่ใช้เข้าเครื่องอยู่แล้ว เครื่องที่เราเช่าก็เคยโดนโปรแกรมของเราเองลบทิ้งกลางงานมาแล้ว
เราดึงผลไปเก็บที่เซิร์ฟเวอร์ของตัวเอง เครื่องนี้เปิดไว้ตลอดและคอยดึงผลการเทรนจากเครื่องที่เช่ากลับมา ต่อจากนี้คำว่าเซิร์ฟเวอร์ของเราหมายถึงเครื่องนี้ ถ้าคุณไม่มีเซิร์ฟเวอร์ ดึงมาไว้ที่คอมของคุณก็ได้
วางเทียบกับอีก 2 ทางที่คนมักนึกถึง: pod จะอยู่ตรงกลางระหว่างจ่ายตามงานกับจ่ายก้อนเดียวจบ
- Serverless: ไม่ได้เช่าเครื่อง แต่ส่งงานเป็นชิ้นไปให้ผู้ให้บริการรัน จ่ายเฉพาะตอนที่มีงานรันอยู่ ไม่มีงานก็ลดเครื่องลงเหลือศูนย์เอง เหมาะกับงานที่เข้ามาเป็นคำขอสั้นๆ อย่างให้โมเดลตอบคำถาม ทั้ง RunPod และ Vast มีบริการแบบนี้ (อ้างอิง 2, อ้างอิง 14)
- ซื้อการ์ดเอง: จ่ายก้อนใหญ่ครั้งเดียว แล้วใช้ได้ไม่จำกัดชั่วโมง
- Pod: เหมาะกับงานยาวที่รันต่อเนื่องหลายชั่วโมงแล้วจบ อย่างการเทรนโมเดล คุณได้คุมเครื่องเองทั้งเครื่องโดยไม่ต้องซื้อการ์ด
หลักคร่าวๆ ที่ได้จากเอกสารของ RunPod คือ ถ้างานกินเครื่องต่อเนื่องเป็นชั่วโมง ให้เช่า pod แล้วปิดทันทีที่งานจบ เพราะ pod คิดเงินทุกวินาทีที่เปิดอยู่ (อ้างอิง 1) แต่ถ้างานเข้ามาเป็นช่วงสั้นๆ มีเวลาว่างคั่น serverless จะเหมาะกว่า (อ้างอิง 2)
งานของเราคือการเทรน policy หรือสมองที่บอกหุ่นยนต์ว่าจะขยับข้อต่อแต่ละข้อยังไง เครื่องมือที่ใช้คือ IsaacLab โปรแกรมจำลองหุ่นยนต์ของ NVIDIA ที่ให้หุ่นหัดเดินซ้ำไปซ้ำมาในโลกเสมือน ตอนจำลองโลก IsaacLab ต้องใช้ Vulkan คือชุดคำสั่งวาดภาพ 3 มิติ ถ้าไดรเวอร์การ์ดจอของเครื่องไม่รองรับ IsaacLab ก็รันไม่ได้ การฝึกแต่ละขั้นเรียกว่า iteration งานของเราบน RunPod ใช้ประมาณ 3.5 วินาทีต่อ iteration 1,000 iteration จึงกินเวลาเกือบชั่วโมง ระหว่างทาง งานจะบันทึกผลการเทรนเป็นไฟล์ไว้เป็นระยะ เรียกว่า checkpoint เอาไปใช้หรือเทรนต่อได้ ตอนแรกเราตั้งให้บันทึกทุก 1,000 iteration พอเจอครั้งที่เครื่องหายไปก่อนจะได้บันทึกสักไฟล์ เราเปลี่ยนเป็นทุก 250 iteration และดึงไฟล์ล่าสุดกลับมาทุก 10 นาที
เราเทรน policy 2 ตัว ตัวแรกชื่อ Flat หัดเดินบนพื้นเรียบ ตัวที่สองชื่อ Rough หัดเดินบนพื้นขรุขระและขึ้นบันได งานแบบนี้รันยาวหลายชั่วโมง pod จึงเป็นทางที่เข้ากับงานที่สุด
ตลอดงานเราจดเงินเป็นรอบ รอบหนึ่งคือการเช่าเครื่อง 1 ครั้ง นับตั้งแต่เปิดเครื่องแล้วเริ่มเสียเงิน จนเครื่องปิดหรือหายไป ถ้ารอบไหน checkpoint กลับมาถึงเซิร์ฟเวอร์ของเราแล้ว เราเรียกว่ารอบที่สำเร็จ นับเป็นสำเร็จแม้งานจะหยุดก่อนครบตามแผน ขอแค่มี checkpoint กลับมาให้ใช้ต่อได้ แต่ผลที่ใช้งานได้ก็ยังไม่แน่ว่าจะดี ต้องทดสอบแยกอีกที อย่าง checkpoint จาก Vast ของเรา ใช้งานได้ก็จริง แต่ขึ้นบันไดได้แย่กว่า checkpoint ก่อนหน้า
ถ้าโจทย์ของคุณคือรันโมเดลภาษาไว้ตอบคำถาม ไม่ใช่เทรน เราเคยเขียนเรื่องเช่า GPU รันโมเดลเองตอนไหนถึงคุ้มไว้แล้ว
ช่วงที่ 2RunPod กับ Vast ต่างกันยังไงในทางปฏิบัติ
RunPod กับ Vast เป็นเว็บให้เช่าเครื่อง GPU ทั้งคู่ สมัคร เติมเงิน เลือกการ์ด แล้วก็เปิดเครื่องได้ ความต่างแรกอยู่ที่ว่าเครื่องเป็นของใคร
RunPod มี 2 แบบ Secure Cloud ตั้งอยู่ในศูนย์ข้อมูลที่มีไฟสำรองและซ่อมได้โดยไม่ต้องปิดเครื่อง ส่วน Community Cloud เป็นเครื่องของเจ้าของการ์ดรายย่อยที่ RunPod คัดมาแล้ว (อ้างอิง 1) เราใช้แค่ Secure
Vast เป็นตลาดกลาง เจ้าของการ์ดหลายราย ตั้งแต่มือสมัครเล่นไปจนถึงศูนย์ข้อมูลใหญ่ เอาเครื่องมาลงประกาศพร้อมราคาที่ตั้งเอง (อ้างอิง 3) คนเช่าเลือกเครื่องจากรายการนั้นทีละเครื่อง เครื่องที่ได้จึงต่างกันไปตามเจ้าของ
การ์ดที่เราเช่าทั้งสองเจ้าคือ RTX 4090 การ์ดฝั่งเกมระดับสูงของ NVIDIA บน Vast เราตรวจ Vulkan ก่อนเทรน คือทดสอบสั้นๆ ว่าไดรเวอร์การ์ดจอของเครื่องนั้นใช้งานได้
| RunPod (Secure) | Vast | |
|---|---|---|
| เครื่องเป็นของใคร | ศูนย์ข้อมูลที่มีไฟสำรอง (อ้างอิง 1) | เจ้าของหลายราย ลงประกาศและตั้งราคาเอง (อ้างอิง 3) |
| ค่าเช่า RTX 4090 ต่อชั่วโมง | ประมาณ $0.75 คิดย้อนจากบิล รวมเวลาเปิดเครื่อง | $0.36 ถึง $0.39 ตามประกาศวันที่เช่า เราเช่าที่ $0.39 |
| ssh เข้าเครื่องได้ | งาน Rough 3 รอบที่เครื่องอยู่จนจบ เข้าได้ทุกรอบ อีกรอบเครื่องหายไป ssh ก็เงียบไปพร้อมเครื่อง | วันแรก (4 ตุลาคม) ลอง 8 เครื่อง เข้าได้ 1 เครื่อง รอบเทรนวันที่ 7 ตุลาคม เข้าได้ |
| image ที่งานเราใช้ได้ | ตัวเดียวที่เราเจอว่าใช้ได้คือ image isaac-lab ของ NVIDIA ส่วน image ทั่วไปตัวที่เราลองไม่มี Vulkan | image ตัวเดียวกัน ผ่านการตรวจ Vulkan |
| เวลาดึง image | ไม่ได้จับเวลาไว้ | 16 นาที คิดเงินตลอด |
| เหตุที่เสียเงินเปล่า | pod หายไปเองกลางทาง 1 เครื่อง ไม่รู้สาเหตุ | วันแรกลอง 8 เครื่อง ไม่ได้เทรนเลย ส่วนรอบเทรนเสียไปกับการดึง image 16 นาที |
สิ่งที่เราไม่ได้วัดในงานนี้ มี 5 เรื่อง แต่ละเรื่องมีคำแนะนำข้อเดียวที่ยังให้ได้
- เช่าเทียบกับซื้อการ์ดเอง: เราไม่ได้เทียบ จึงไม่มีตัวเลขให้ ถ้าจะชั่งเอง ให้เอาต้นทุนต่อรอบที่สำเร็จของงานคุณเป็นตัวตั้ง ไม่ใช่ราคาต่อชั่วโมง
- เวลาดึง image บน RunPod: เราไม่ได้จับเวลาไว้ ที่จดได้มีแค่ฝั่ง Vast ครั้งเดียว คือ 16 นาที คิดที่ $0.39 ต่อชั่วโมงเป็นเงินราว $0.10 ถ้าเช่าครั้งแรก ให้จับเวลาการดึง image ของคุณไว้ด้วย
- การหยุดและลบเครื่องบน Vast: เราไม่ได้ตรวจว่าตอนหยุดหรือลบเครื่อง ไฟล์บนดิสก์แบบไหนอยู่รอด เรื่องค่าดิสก์ตอนหยุดเครื่องที่เล่าไว้ข้างบนก็มาจากเอกสารของ Vast (อ้างอิง 6) ไม่ใช่จากที่เราเจอ ให้ดึงผลออกจากเครื่องที่เช่าเป็นระยะ จะได้ไม่ต้องพึ่งเรื่องนี้
- image สำหรับเครื่องมืออื่น: เราลองแค่ IsaacLab งานอื่นต้องใช้ image แบบไหน ตอบไม่ได้ ให้อ่านเอกสารของเครื่องมือที่คุณใช้ว่าต้องการอะไรจากเครื่อง แล้วรันรอบสั้นก่อนปล่อยงานยาว
- วิธีเลือกเครื่องบน Vast ให้เข้าได้: รายการเครื่องของ Vast มีคะแนนความเสถียร สถานะผ่านการยืนยัน (verified) และป้ายศูนย์ข้อมูลให้ใช้กรอง (อ้างอิง 7, อ้างอิง 8) แต่เราไม่ได้จดค่าพวกนี้ของ 8 เครื่องในวันแรก ไม่ได้ลองว่ากรองแล้วช่วยไหม และไม่ได้จดว่าอีก 7 เครื่องพังแบบไหน ถ้าเช่าจากตลาดกลาง ให้เผื่องบไว้ลองหลายเครื่องกว่าจะได้เครื่องที่ใช้ได้
ตัวเลขค่าเช่าต่อชั่วโมง 2 ตัวในตารางมาคนละทาง ของ Vast คือราคาตามประกาศ ของ RunPod เราไม่ได้จดจากหน้าเว็บไว้ เลยคิดย้อนจากบิล รอบ 1 ของงาน Rough ในตารางบิลข้างล่าง เทรน 3,448 iteration ที่ 3.48 วินาทีต่อ iteration รวมประมาณ 3.3 ชั่วโมง จ่ายไป $2.51 หารออกมาได้ประมาณ $0.75 ต่อชั่วโมง บิลนี้รวมเวลาเปิดเครื่องและรอบสั้นๆ 6 นาทีก่อนหน้าไว้ด้วย ราคาบนหน้าเว็บของ RunPod จึงน่าจะต่ำกว่านี้ แต่ต่ำกว่าเท่าไร เราไม่รู้
เรื่อง image บน RunPod เราจ่ายเงินจริงไปก่อน กว่าจะรู้ว่า image ทั่วไปตัวที่เราใช้มีแค่เครื่องมือเทรนโมเดล ไม่มี Vulkan เปิดเครื่องได้ แต่งานไม่รัน สุดท้ายต้องใช้ image เฉพาะของ NVIDIA
ตัวเลข 1 จาก 8 ของ Vast มาจากวันเดียว คือ 4 ตุลาคม 2026 วันนั้นเราลองไป 8 เครื่อง ssh เข้าได้เครื่องเดียว แต่ติดตั้งเครื่องมือเทรนบนเครื่องนั้นไม่สำเร็จ สาเหตุก็ไม่รู้ เพราะ log ของขั้นนั้นหายไป แล้วเราก็เลิกใช้ Vast ไปก่อน ตอนนั้นเรายังตั้งเครื่องไม่คล่อง เครื่องที่เข้าไม่ได้บางเครื่องอาจพังเพราะการตั้งค่าของเราเอง พอกลับมาลองอีกทีเมื่อ 7 ตุลาคม เครื่องที่ได้มาเข้าได้ปกติ
ฝั่ง RunPod งาน Rough มี 4 รอบ ในจำนวนนี้เครื่องอยู่จนจบ 3 รอบ และ ssh เข้าได้ทั้ง 3 รอบ ส่วนรอบ 2 ในตารางบิล เครื่องหายไปหลังรันได้ประมาณ 42 นาที แล้ว ssh ก็ไม่ตอบอีกเลย เทียบกับ Vast วันแรกที่ลอง 8 เครื่องแล้วตอบแค่เครื่องเดียว ส่วนงานแรกคือเทรน Flat รวมช่วงที่เรายังหัดตั้งเครื่องอยู่ด้วย งานนั้นเราไม่ได้จดแยกรอบ จึงไม่ได้นับรวม
ช่วงที่ 3ราคาต่อชั่วโมงซ่อนอะไรไว้?
ราคาต่อชั่วโมงเท่าที่เรามีอยู่ บอกทิศทางได้ ในงานของเรา ตัวเลขนี้ชี้ไปทางเดียวกับต้นทุนต่อรอบที่สำเร็จ คือ Vast ถูกกว่า แต่ห่างกันจริงแค่ไหน เราบอกไม่ได้ เพราะ $0.75 ของ RunPod คิดย้อนจากบิล และราคาบนหน้าเว็บน่าจะต่ำกว่านั้น
สิ่งที่ราคาต่อชั่วโมงไม่ได้บอกคือ เงินส่วนไหนจ่ายไปเปล่าๆ งาน Rough บน RunPod จ่ายไป $4.65 ใน 4 รอบ รอบที่ pod หายไปกลางทางกินเงิน $0.57 แล้วไม่ได้อะไรกลับมาเลย รอบสั้น 6 นาทีก็ไม่ได้อะไรเหมือนกัน แต่เงินของรอบนั้นอยู่ในบิล $2.51 และไม่ได้จดแยกไว้ พูดได้แค่ว่าอย่างน้อย $0.57 หรืออย่างน้อย 12% ของ $4.65 จ่ายไปเปล่าๆ บน Vast วันแรกเสียไปประมาณ $0.84 โดยไม่ได้เทรนอะไรเลย ส่วนรอบเทรนรอบเดียวของ Vast ได้ checkpoint กลับมา แต่ 16 นาทีแรกหมดไปกับการดึง image ยังไม่ได้เทรนเลย คิดเป็นเงินประมาณ $0.10 จะเห็นส่วนพวกนี้ได้ก็ต้องนับทุกนาทีที่เครื่องเปิด ไม่ว่านาทีนั้นจะได้งานหรือเปล่า ต้นทุนต่อรอบที่สำเร็จในงาน Rough นับแบบนั้นอยู่แล้ว
เงินที่เสียเปล่าและเกือบเสียของเรามาจาก 5 ทาง
- เครื่องที่เข้าไม่ได้หรือติดตั้งไม่ผ่าน วันแรกบน Vast เสียไปประมาณ $0.84 โดยไม่ได้เทรนเลย ตัวเลขนี้ปนกับงานอื่นที่รันในบัญชีเดียวกันช่วงนั้น จึงเป็นตัวเลขคร่าวๆ
- เวลาดึง image บน Vast ใช้ 16 นาทีกว่าเครื่องจะพร้อมเริ่มเทรน คิดที่ $0.39 ต่อชั่วโมงก็เป็นเงินประมาณ $0.10
- เครื่องหายกลางทาง บน RunPod pod หายไปเองหลังรันได้ประมาณ 42 นาที เทรนไปได้แค่ 720 กว่า iteration ตอนนั้นเรายังตั้งให้บันทึก checkpoint ทุก 1,000 iteration จึงไม่เหลืออะไรเลย เสียไป $0.57 หลังรอบนี้เราถึงเปลี่ยนมาบันทึกทุก 250
- ตัวเฝ้าค่าใช้จ่ายอ่านผิด ตัวเฝ้าค่าใช้จ่ายคือโปรแกรมของเราเองที่คอยลบเครื่องว่าง บน Vast เราวางแผนเทรนให้ถึง 8,716 iteration แต่โปรแกรมนี้ลบเครื่องทิ้งที่ 8,000 ตอนที่งานยังเดินอยู่ ครั้งนั้นเงินที่จ่ายไปยังไม่สูญ เพราะ checkpoint 8,000 กลับมาถึงเราก่อนแล้ว ส่วน 716 iteration ที่ถูกตัดไปก็ยังไม่ได้รัน เลยไม่ต้องจ่าย ที่หายไปคืองานตามแผน ไม่ใช่เงิน แต่ถ้าตอนนั้นยังไม่ได้ดึง checkpoint กลับมา ก็จะเสียทั้งรอบ หัวข้อ "ระวังอะไร" ข้างล่างเล่าละเอียด
- สคริปต์ของเราเองพัง สคริปต์คือโปรแกรมสั้นๆ ที่เราเขียนไว้สั่งงานแทนการพิมพ์ทีละคำสั่ง ตลอดงานนี้เราเปิดเครื่องรวมกันประมาณ 15 รอบบนทั้งสองเจ้า อย่างน้อย 5 รอบพังเพราะสคริปต์ของเราเอง เช่น เทรน Flat จบไปแล้วรอบหนึ่ง แต่สคริปต์หาไฟล์ผลไม่เจอ ต้องเทรนใหม่ หรือรอบ Rough รอบแรกสุดที่เราหยุดเองหลัง 6 นาที เพราะเผลอรันสคริปต์เวอร์ชันเก่า
ถ้าคุณเช่าครั้งแรก ข้อ 5 นี่แหละที่ต้องระวังที่สุด เพราะย้ายไปเช่าเจ้าไหน ปัญหานี้ก็ตามไปด้วย
ช่วงที่ 4บิลทุกรอบที่เราจ่าย
| เจ้า | งาน | รอบ | ได้อะไรกลับมา | เงิน |
|---|---|---|---|---|
| RunPod | งานแรก: เทรน Flat รวมช่วงที่หัดตั้งเครื่อง | หลายรอบ ไม่ได้จดแยก | Flat ที่ใช้งานได้ เทรน 9,000 iteration | ประมาณ $4.32 |
| Vast | วันแรก 4 ตุลาคม | ลอง 8 เครื่อง | ไม่ได้เทรนอะไร | ประมาณ $0.84 ปนกับงานอื่น |
| RunPod | Rough | 2 รอบในบิลใบเดียว: รอบสั้นที่เราหยุดเองหลัง 6 นาที กับรอบ 1 | รอบสั้นไม่ได้อะไร รอบ 1 สำเร็จ ได้ 3,448 iteration | $2.51 |
| RunPod | Rough | รอบ 2 | pod หายหลัง 42 นาที ไม่ได้อะไร | $0.57 |
| RunPod | Rough | รอบ 3 ต่อจาก checkpoint 3,447 | สำเร็จ ได้ iteration 3,447 ถึง 5,716 | $1.57 |
| Vast | Rough | 1 รอบ ต่อจาก 5,716 | สำเร็จ ได้ iteration 5,716 ถึง 8,000 | $0.93 |
| รวม | ประมาณ $10.74 |
checkpoint สุดท้ายของรอบ 1 มีเลข 3,447 เพราะนับ iteration เริ่มจาก 0 รอบ 3 จึงเริ่มที่เลขนี้
แยกตามเจ้า RunPod $8.97 Vast ประมาณ $1.77 ส่วนการเปิดเครื่องประมาณ 15 รอบที่เล่าไว้ข้างบนกระจายอยู่ในตารางนี้ทั้งหมด ส่วนใหญ่อยู่ใน 2 แถวแรกที่ไม่ได้จดแยกรอบ รอบ Flat ที่ต้องเทรนใหม่และ image ตัวแรกที่ไม่มี Vulkan ก็อยู่ในแถว $4.32
ช่วงที่ 5ต้นทุนต่อรอบที่สำเร็จ คิดยังไง
เอาเงินทุกรอบของงานเดียวกันบนเจ้าเดียวกันมารวมกัน รวมรอบที่ไม่ได้อะไรกลับมาด้วย แล้วหารด้วยจำนวนรอบที่สำเร็จ เราคิดจากงาน Rough เพราะเป็นงานเดียวที่เทรนบนทั้งสองเจ้า
| RunPod | Vast | |
|---|---|---|
| รอบที่จ่ายในงาน Rough | 4 | 1 |
| รอบที่สำเร็จ | 2 | 1 |
| เงินทุกรอบรวมกัน | $2.51 + $0.57 + $1.57 = $4.65 | $0.93 |
| ต้นทุนต่อรอบที่สำเร็จ | $4.65 ÷ 2 ≈ $2.33 | $0.93 ÷ 1 = $0.93 |
4 รอบของ RunPod คือรอบสั้น 6 นาที รอบ 1 รอบ 2 และรอบ 3 ในตารางบิล รอบสั้นกับรอบ 1 อยู่ในบิล $2.51 ใบเดียวกัน เงินของรอบสั้นจึงแยกออกมาไม่ได้
ฝั่ง Vast มีรอบที่สำเร็จให้นับแค่รอบเดียว และเป็นรอบที่ตัวเฝ้าค่าใช้จ่ายของเราเองตัดจบก่อนเวลา $0.93 จึงเป็นหลักฐานที่อ่อนที่สุดในหน้านี้ รอบนั้นยังนับว่าสำเร็จ เพราะ checkpoint 8,000 กลับมาถึงเซิร์ฟเวอร์ของเราก่อนเครื่องถูกลบ แผนคือเทรนต่ออีก 3,000 iteration ให้ถึง 8,716 เท่ากับยังขาดอีก 716 iteration
ตัวเลขนี้ตอบแค่เรื่องเงิน ซึ่งเป็นปัจจัยหนึ่งตอนเลือกเจ้า การเข้าเครื่องได้แน่นอนเป็นอีกปัจจัย ทั้ง 2 ข้ออยู่ในหัวข้อ "ปัจจัยที่ต้องคิดก่อนเลือก" ข้างล่าง
ตารางนี้ไม่ได้นับ 2 ก้อน ก้อนแรกคืองานแรกบน RunPod เทรน Flat ประมาณ $4.32 รวมช่วงที่เรายังหัดตั้งเครื่องอยู่ด้วย และได้ policy ที่ใช้งานได้กลับมา ก้อนที่สองคือวันแรกบน Vast ประมาณ $0.84 ลองไป 8 เครื่อง ไม่ได้เทรนอะไรเลย แถมเงินยังปนกับงานอื่นในบัญชี สองก้อนนี้ไม่ใช่งาน Rough และได้ของกลับมาไม่เท่ากัน เราจึงไม่เอามาหารรวม
อีกเรื่องคือรอบของสองเจ้ายาวไม่เท่ากัน รอบที่สำเร็จ 2 รอบของ RunPod ได้งานรวม 5,717 iteration รอบเดียวของ Vast ได้ 2,284 iteration เราจึงดูอีกมุมหนึ่งด้วย คือเงินต่อ 1,000 iteration ไว้เทียบงานที่ได้ต่อเงินที่จ่าย
| RunPod | Vast | |
|---|---|---|
| iteration ที่ได้กลับมา | 3,448 + 2,269 = 5,717 | 2,284 |
| เงินต่อ 1,000 iteration | $4.65 ÷ 5.717 ≈ $0.81 | $0.93 ÷ 2.284 ≈ $0.41 |
ในงานนี้ Vast ถูกกว่าทั้งสองมุม ต่อ 1,000 iteration จ่ายประมาณครึ่งเดียวของ RunPod
แต่รอบที่สำเร็จมีแค่ 2 รอบกับ 1 รอบ ตัวเลขจึงบอกได้แค่ว่าเอียงไปทางไหน ยังบอกส่วนต่างที่แน่นอนไม่ได้
รอบเดียวของ Vast ก็มีช่วงที่จ่ายเปล่า คือ 16 นาทีที่ดึง image ส่วน 716 iteration ที่ตัวเฝ้าค่าใช้จ่ายตัดไปไม่เคยได้รัน เราเลยไม่ได้จ่ายเงินส่วนนั้น
ที่เสียเปล่าส่วนใหญ่บน Vast คือวันแรก ซึ่งไม่ได้อยู่ในตัวเลขนี้ ถ้าเจอวันแบบนั้นอีกในงานเดียวกัน ตัวเลขฝั่ง Vast ก็จะขยับทันที
ช่วงที่ 6ข้อดีข้อเสียของแต่ละเจ้า
ช่วงที่ 7ปัจจัยที่ต้องคิดก่อนเลือก
แต่ละข้อบอกไว้ด้วยว่างานของเราชี้ไปทางไหน
- งบ: เอียงไปทาง Vast ถูกกว่าทั้งต่อรอบที่สำเร็จและต่อ 1,000 iteration แต่ไม่ว่าเลือกเจ้าไหน ให้กันเงินเผื่อช่วงแรกที่ยังไม่คล่องด้วย งานแรกของเราบน RunPod คือเทรน Flat ประมาณ $4.32 รวมช่วงที่หัดตั้งเครื่อง และได้ policy ที่ใช้งานได้กลับมา วันแรกบน Vast ประมาณ $0.84 ลอง 8 เครื่อง ไม่ได้เทรนอะไรเลย
- การเข้าเครื่อง: เอียงไปทาง RunPod Secure งาน Rough บน RunPod มี 3 ใน 4 รอบที่เครื่องอยู่จนจบ และ ssh เข้าได้ทั้ง 3 รอบ ส่วนรอบที่เครื่องหายไป ssh ก็เงียบไปพร้อมเครื่อง ฝั่ง Vast ต้องเลือกเครื่องเอง วันแรกที่เรายังตั้งเครื่องไม่คล่อง ลอง 8 เครื่อง ตอบแค่เครื่องเดียว
- ขนาด image: ไม่ได้ขึ้นกับเจ้า ส่วนเวลาดึงเราเทียบไม่ได้ ขนาดเป็นเรื่องของตัว image และงานเราใช้ image ตัวเดียวกันทั้งสองเจ้า แต่เวลาดึงอาจขึ้นกับเน็ตของเครื่องที่เช่าด้วย ที่จับเวลาไว้มีแค่ฝั่ง Vast คือ 16 นาที เช่าครั้งแรกจึงควรจับเวลาเอง งานที่ต้องเปิดปิดเครื่องบ่อยอาจเสียเงินตรงนี้ซ้ำทุกรอบ
- ความยาวงาน: ไม่ได้ขึ้นกับเจ้า บน RunPod pod หายไปเอง ส่วนบน Vast ตัวเฝ้าค่าใช้จ่ายของเราลบเครื่องทิ้งเอง จะแบบไหนก็ตาม งานยิ่งยาว ถ้าเครื่องหายตอนท้ายก็ยิ่งเสียมาก ให้งานบันทึก checkpoint ถี่ๆ แล้วดึงกลับมาเก็บนอกเครื่องที่เช่าระหว่างทาง
- ความต้องการเฉพาะของงาน: ไม่ได้ขึ้นกับเจ้า งานของเราต้องมี Vulkan และ image ที่เราเจอว่าใช้ได้มีตัวเดียว คือ isaac-lab ของ NVIDIA ซึ่งใช้ได้ทั้งสองเจ้า
- เงินรั่วตอนลืมปิดเครื่อง: ไม่ได้ขึ้นกับเจ้า pod คิดเงินตราบที่เปิดอยู่ ลืมปิดคืนเดียวก็จ่ายทั้งคืน ควรมีอะไรสักอย่างคอยปิดเครื่องให้ และสิ่งนั้นต้องอ่านสัญญาณให้ถูกด้วย ทั้งสองเจ้าหยุดเครื่องให้เองตอนเงินที่เติมไว้หมด (อ้างอิง 4, อ้างอิง 6) ถ้าไม่มีเซิร์ฟเวอร์ของตัวเอง ดูข้อ 5 ในหัวข้อ "ถ้าจะเช่าครั้งแรก ทำยังไง" ข้างล่าง
ช่วงที่ 8ระวังอะไร: ตัวเฝ้าค่าใช้จ่ายที่ลบเครื่องผิดจังหวะ
งานเทรนรันบนเครื่องที่เช่า ส่วนโปรแกรมกันเงินรั่วของเรารันอยู่บนเครื่องเซิร์ฟเวอร์ของเราเอง คอยดูว่า pod ไหนเปิดทิ้งไว้เฉยๆ แล้วลบให้ ตัดสินจากตัวเลขการใช้ GPU ที่เว็บเช่ารายงานผ่าน API คือช่องทางให้โปรแกรมถามข้อมูลจากเว็บเช่าได้โดยตรง ถ้าตัวเลขเป็น 0 ติดกัน 2 ครั้ง ก็ถือว่าเครื่องว่าง แล้วลบเครื่องทิ้งเลย ไม่ได้แค่หยุด
วันที่ 7 ตุลาคม 2026 Vast รายงานตัวเลขนั้นเป็น 0.0 ติดกัน 2 ครั้ง ห่างกันครึ่งชั่วโมง ทั้งที่ IsaacLab กำลังเทรนอยู่ และ checkpoint ยังส่งกลับมาถึงเซิร์ฟเวอร์ของเราทุกประมาณ 11 นาที ที่ 7,500 ที่ 7,750 แล้วก็ 8,000 ช่วงละ 250 iteration คิดออกมาได้ประมาณ 2.6 วินาทีต่อ iteration บนเครื่อง Vast เครื่องนั้น (3.5 วินาทีที่เล่าไว้ก่อนหน้าเป็นของ RunPod) แต่โปรแกรมก็ทำตามที่เขียนไว้ทุกอย่าง คือลบเครื่องทิ้งที่ iteration 8,000
ที่ไม่เสียหนักกว่านี้ เพราะเราดึง checkpoint 8,000 กลับมาเก็บไว้ก่อนแล้ว ถ้าตั้งให้ดึงผลตอนจบงานอย่างเดียว การลบครั้งนั้นจะทำให้ผลที่ยังไม่ได้ดึงกลับมาหายไปหมด คือของทั้งหมดที่เงิน $0.93 ซื้อมา ส่วนตัวเงิน จะลบเครื่องหรือไม่ ก็จ่ายไปแล้วอยู่ดี
ตอนนั้นโปรแกรมตัวเดียวกันเคยเฝ้างานบน RunPod มาแล้วโดยไม่มีปัญหา เราเลยวางใจ ทำไม Vast รายงาน 0.0 เรายังไม่รู้ เครื่องถูกลบไปแล้ว จะเข้าไปดูอะไรต่อก็ไม่ได้ ที่รู้แน่มีแค่ว่าหลักฐานว่างานเดินจริงมาถึงเซิร์ฟเวอร์ของเราทุก 11 นาที แต่โปรแกรมไม่เคยมองตรงนั้นเลย
ช่วงต่อจากนี้เขียนไว้ให้คนที่ไม่มีเซิร์ฟเวอร์ของตัวเอง มีสิ่งที่เราสรุปจากเอกสารของทั้งสองเจ้า กับทางสำรองง่ายๆ ส่วนระบบของเราเอง คือเซิร์ฟเวอร์ที่คอยเฝ้าเครื่องที่เช่า เล่าไว้ท้ายสุด ให้เห็นว่าเสี่ยงตรงไหน ไม่ได้แปลว่าคุณต้องมีตั้งแต่เช่าครั้งแรก
- เท่าที่เราอ่านเอกสารมา เครื่องว่างไม่มีใครปิดให้ แต่เงินหมดเครื่องจะหยุด: ไม่มีเจ้าไหนพูดถึงการหยุดเครื่องเพราะเครื่องว่าง แต่ทั้งคู่เป็นระบบเติมเงินก่อนใช้ ยอดเหลือ $0 เมื่อไร เครื่องจะหยุดเอง (อ้างอิง 4, อ้างอิง 6)
- เติมเงินไว้แค่เท่าที่ยอมเสีย ใช้เป็นเพดานคร่าวๆ ได้: ต้องปิดการเติมเงินอัตโนมัติไว้ด้วย คือ auto-pay ของ RunPod กับ autobilling ของ Vast ซึ่งตัดเงินจากบัตรที่ผูกไว้ให้เอง ที่ว่าคร่าวๆ เพราะ Vast ปล่อยให้ยอดติดลบได้นิดหน่อย วิธีนี้ให้ถือเป็นทางสุดท้าย ไม่ใช่แผน เพราะตอนเงินหมด pod บน RunPod ที่ไม่ได้ต่อ network volume จะถูกลบทิ้ง ข้อมูลในเครื่องเอาคืนไม่ได้อีก (อ้างอิง 4, อ้างอิง 6)
- เพดาน $80 ของ RunPod ไม่ช่วยเรื่องนี้: RunPod ตั้งต้นให้ทั้งบัญชีใช้เงินรวมทุกเครื่องได้ไม่เกิน $80 ต่อชั่วโมง ซึ่งสูงกว่าค่าเช่า RTX 4090 เครื่องเดียวมาก ลืมปิดเครื่องเดียวจึงไม่ชนเพดานนี้ (อ้างอิง 4)
- ตั้งเวลาปิดบน RunPod (ทางเสริม): เปิด terminal ของ pod ก่อน ไม่ใช่ของคอมคุณ terminal ของ pod คือหน้าจอพิมพ์คำสั่งที่รันอยู่บนเครื่องที่เช่า เปิดได้จากปุ่ม Connect ของ pod บนเว็บ RunPod แล้วกด Open Web Terminal หรือจะ ssh เข้าไปก็ได้ (อ้างอิง 13) ในหน้าจอนั้นพิมพ์
(sleep 2h; runpodctl pod stop $RUNPOD_POD_ID) &ส่วน$RUNPOD_POD_IDนั้น RunPod ตั้งค่าไว้ใน pod ให้อยู่แล้ว (อ้างอิง 12) ตัว&ท้ายคำสั่งส่งคำสั่งทั้งก้อนในวงเล็บไปรออยู่เบื้องหลัง คุณใช้ terminal เดิมพิมพ์คำสั่งอื่นต่อได้เลย ครบ 2 ชั่วโมงเครื่องน่าจะหยุดเอง (อ้างอิง 5) แต่เรายังไม่เคยรันคำสั่งนี้เองเลย จึงไม่รู้ว่าถ้าปิดหน้า terminal ไปก่อน คำสั่งยังทำงานต่อไหม เอกสารของ RunPod ก็ไม่ได้บอก อย่าใช้ทางนี้เป็นทางหลัก การหยุดเครื่องล้าง container disk ไปด้วย ต้องก๊อปผลออกมาเก็บก่อนถึงเวลานั้น หน้าเอกสารของ Vast ที่เราอ่านไม่ได้พูดถึงวิธีแบบนี้ (อ้างอิง 6, อ้างอิง 7)
ไม่ว่าจะเช่าเจ้าไหน ทางที่ไม่ต้องพึ่งคำสั่งข้างบนก็ง่ายๆ คือตั้งปลุกในมือถือไว้ตรงเวลาที่กะว่าจะปิดเครื่อง พอปลุกดัง ให้เข้าเว็บของเจ้าที่เช่าแล้วกดหยุดเครื่องเอง (บน RunPod คือหน้า console) จากนั้นดูให้แน่ว่าเครื่องขึ้นสถานะหยุดจริง
ทางแก้ของเราคือใบจอง เป็นโน้ตที่ตัวคุมงาน (โปรแกรมที่สั่งและคุมงานเทรน) ทิ้งไว้บนเซิร์ฟเวอร์ของเรา ว่า "ยังทำงานอยู่ อย่าลบเครื่อง" พร้อมเวลาหมดอายุ ก่อนลบเครื่อง ตัวเฝ้าจะเช็กว่าใบจองยังไม่หมดอายุ และตัวคุมงานยังรันอยู่ ทั้งสองอย่างดูบนเซิร์ฟเวอร์ของเราเอง ถ้าผ่านทั้งคู่ ตัวเฝ้าแค่ส่งเตือนมาหาเรา ใบจองต้องหมดอายุได้ เพื่อไม่ให้ใบจองที่ลืมทิ้งไว้ทำให้เครื่องเปิดค้างไปตลอด
ทางแก้นี้ผ่านการทดสอบกับของจำลองที่เราเขียนขึ้นมาแทนของจริงแล้ว แต่ยังไม่เคยลองกับ pod จริงที่ต้องจ่ายเงิน ถ้าจะเอาไปใช้ ให้ถือว่ายังไม่ผ่านของจริง ส่วนระบบปิดเครื่องอัตโนมัติที่คุณใช้อยู่ จะเขียนเองหรือได้มาจากที่อื่นก็ตาม ลองดูว่าระบบนั้นตัดสินจากตัวเลขการใช้ GPU อย่างเดียวหรือเปล่า
ช่วงที่ 9ถ้าจะเช่าครั้งแรก ทำยังไง
- ตรวจของฟรีก่อนเปิดเครื่องที่ต้องจ่าย มี 2 ข้อที่ใช้เครื่องมือของเว็บเช่าเอง RunPod มี REST API และโปรแกรม command line ชื่อ
runpodctlVast มีโปรแกรม command line ชื่อvastai(command line คือการพิมพ์คำสั่งในหน้าจอ terminal) ก่อนเช่าบน RunPod เราลองครบทั้ง 4 อย่างนี้- image ดึงได้ไหม: พิมพ์
docker manifest inspect <ชื่อ image>ใช้ชื่อเดียวกับที่จะใส่ในช่อง image ของเว็บเช่า ของเราคือnvcr.io/nvidia/isaac-lab:2.3.2คำสั่งนี้ต้องใช้ Docker ซึ่งเป็นโปรแกรมดึงและรัน image แบบเดียวกับที่เว็บเช่าใช้ ให้ติดตั้งบนคอมของคุณเองก่อน ถ้าเป็น image สาธารณะ ไม่ต้องล็อกอินก็ใช้ได้ คำตอบที่ดีคือได้รายละเอียดของ image กลับมา ถ้าได้ข้อความว่าไม่มีสิทธิ์หรือไม่พบ ให้แก้ก่อนเช่า - คำขอเช่าถูกรูปแบบไหม: ส่งคำขอเช่าโดยใส่ชื่อการ์ดที่ไม่มีอยู่จริง เขียนเป็นคำสั่ง
runpodctlได้แบบนี้runpodctl pod create --image nvcr.io/nvidia/isaac-lab:2.3.2 --gpu-id "NVIDIA GeForce RTX 9999"(อ้างอิง 9) คำตอบที่ดีคือระบบปฏิเสธเพราะชื่อการ์ดอย่างเดียว และไม่มีเครื่องไหนเปิดขึ้นมา ถ้าระบบติดช่องอื่นด้วย แปลว่าคำขอจริงจะพังตรงนั้น - เครื่องหายแล้วระบบตอบยังไง: ถามสถานะเครื่องด้วยเลขเครื่องที่ไม่มีอยู่ เช่น
runpodctl pod get abc123notreal(อ้างอิง 9) บน Vast คำสั่งแบบเดียวกันคือvastai show instance <เลขเครื่อง>(อ้างอิง 10) คำตอบที่ดีคือไม่พบ (not found) ชัดๆ จำหน้าตาคำตอบนี้ไว้ วันที่เครื่องหายจริง งานของคุณจะได้รู้ว่าต้องหยุด - โค้ดเข้ากับเครื่องมือใน image ไหม: เปิดหน้าของ image บนคลังที่ image นั้นวางอยู่ ดูว่ามาพร้อมเครื่องมือเวอร์ชันไหน แล้วเทียบกับเวอร์ชันที่โค้ดเทรนของคุณเขียนไว้ใช้ ของเราคือ IsaacLab ใน
nvcr.io/nvidia/isaac-lab:2.3.2
ทั้ง 4 อย่างตอบตรงกับที่คาด และไม่เสียเงินเลย ฝั่ง Vast ใช้
vastaiดูรายการเครื่องที่ประกาศพร้อมราคาได้ก่อนเช่า ข้อแรกกับข้อสุดท้ายไม่ขึ้นกับเจ้าไหน ส่วน 2 ข้อตรงกลางใช้เครื่องมือของแต่ละเจ้า และเรายังไม่ได้ลองกับ Vast - image ดึงได้ไหม: พิมพ์
- เลือก image ให้ตรงงาน หน้าเช่าเครื่องของแต่ละเจ้ามีช่อง template หรือช่อง image ให้เลือกตัวสำเร็จรูปหรือพิมพ์ชื่อลงไป เราใช้ image isaac-lab ที่ NVIDIA ทำเองและวางไว้บนคลัง image ของ NVIDIA (nvcr.io) ตัวนี้ผ่านการตรวจ Vulkan จึงไม่ต้องจ่ายค่าติดตั้งเพิ่มทุกครั้ง
- รันรอบสั้นก่อน เปิดเครื่องแล้วรันงานสั้นๆ ให้รู้ว่าเครื่องนี้ทำงานได้จริง ก่อนปล่อยงานยาวหลายชั่วโมง
- บันทึกและดึงผลระหว่างทาง ตั้งให้งานบันทึก checkpoint ถี่ แล้วดึงกลับมาเก็บเป็นระยะ ถ้าเครื่องหาย ให้งานรู้ตัวแล้วหยุดเอง ของเราคือถ้า ssh เข้าไม่ได้ 5 ครั้งติด งานจะถามสถานะเครื่องผ่าน API ถ้าได้คำตอบว่าไม่พบ ก็หยุดทันที คำตอบว่าไม่พบนี้เราลองด้วยเลขเครื่องที่ไม่มีอยู่จริงมาแล้ว ส่วนกรณีจริงเคยเกิดแค่ครั้งเดียว คือตอนที่ตัวเฝ้าค่าใช้จ่ายของเราลบเครื่อง Vast ทิ้ง งานรู้ว่าเครื่องหายไปแล้วหยุดเองภายในไม่กี่นาที ตัวหยุดนี้เราเพิ่งทำหลังรอบ 2 ที่ pod บน RunPod หายไป ตอนนั้นจึงยังไม่มี และหลังจากนั้นก็ยังไม่เคยเจอเครื่องที่หายไปเพราะปัญหาฝั่งเว็บเช่าอีก
- ให้มีอะไรคอยปิดเครื่อง แต่อย่าให้ตัดสินจากตัวเลขเดียว ต้องมีอะไรปิดเครื่องตอนเราลืม และต้องรู้ว่าสิ่งนั้นดูอะไรอยู่ ถ้าไม่มีเซิร์ฟเวอร์ของตัวเอง ใช้ทางเหล่านี้แทน
- เติมเงินไว้แค่เท่าที่ยอมจ่าย แล้วปิดการเติมเงินอัตโนมัติ ทั้ง RunPod และ Vast หยุดเครื่องให้เองตอนเงินที่เติมไว้เหลือ $0
- ตั้งปลุกในมือถือไว้ตรงเวลาที่กะว่าจะปิดเครื่อง พอปลุกดังก็เข้าเว็บไปกดหยุดเครื่องเอง
- บน RunPod ตั้งเวลาหยุดเครื่องจากบน pod เองได้ด้วย แต่ใช้เป็นแค่ทางเสริม เราเองก็ยังไม่เคยรันคำสั่งนี้
รายละเอียดและที่มาอยู่ในหัวข้อ "ระวังอะไร" ข้างบน ส่วนของเรา ตัวที่คอยปิดเครื่องเป็นโปรแกรมที่เขียนเอง รันบนเซิร์ฟเวอร์ของเรา
- จดเงินทุกรอบ รวมรอบที่ไม่ได้อะไรกลับมาด้วย แล้วหารด้วยจำนวนรอบที่สำเร็จ ได้ต้นทุนต่อรอบที่สำเร็จของคุณเอง ถ้ารอบยาวไม่เท่ากัน ก็หารด้วยงานที่ได้เป็นอีกมุมหนึ่ง แล้วเก็บไว้ใช้เทียบเจ้าครั้งหน้า
ช่วงที่ 10รอบที่สำเร็จเรื่องหนึ่ง checkpoint ที่ดีอีกเรื่องหนึ่ง
ต้นทุนต่อรอบที่สำเร็จตอบเรื่องเงินอย่างเดียว ว่าจ่ายเท่าไรกว่าจะได้ของที่ใช้ต่อได้กลับมา ส่วนจะเก็บ checkpoint ไหนไว้ใช้ ต้องทดสอบแยกต่างหาก และเจ้าที่เช่าไม่ได้เป็นคนตัดสินเรื่องนี้
เป้าของ Rough คือให้หุ่นเดินบนพื้นต่างระดับได้ เราเลยทดสอบด้วยการขึ้นบันได โดยจำลองบน Mac ของเราเองด้วยโปรแกรม MuJoCo ให้แต่ละ policy พาหุ่นเดินเข้าหาขั้นบันได 20 ครั้ง จากจุดเริ่ม 5 ตำแหน่ง ระยะเยื้อง 2 แบบ ความเร็ว 2 ระดับ ครั้งไหนขึ้นบันไดได้โดยไม่ล้มนับว่าผ่าน
แถว Rough ทั้ง 3 แถวเป็นโค้ดชุดเดียวกัน ต่างกันแค่เทรนไปถึงขั้นไหน checkpoint 3,447 กับ 5,716 เทรนบน RunPod ส่วน 8,000 เทรนต่อจาก 5,716 บน Vast ตารางนี้จึงเทียบขั้นของการเทรน ไม่ได้เทียบเจ้า
| policy | ขึ้นบันไดได้ |
|---|---|
| Flat 9,000 | 0 จาก 20 ครั้ง |
| Rough checkpoint 3,447 | 10 จาก 20 ครั้ง |
| Rough checkpoint 5,716 | 12 จาก 20 ครั้ง |
| Rough checkpoint 8,000 | 6 จาก 20 ครั้ง |
checkpoint 8,000 จาก Vast ขึ้นบันไดได้แค่ 6 จาก 20 ครั้ง ส่วน 5,716 ขึ้นได้ 12 จาก 20 ในการทดสอบนี้ 8,000 ขึ้นได้น้อยกว่า 5,716 ทั้งที่เทรนไปไกลกว่า รอบบน Vast ก็ยังนับเป็นรอบที่สำเร็จในเรื่องเงินอยู่ดี เพราะได้ของที่ใช้ต่อได้กลับมา ส่วน checkpoint ที่เราเก็บไว้ใช้ขึ้นบันไดคือ 5,716
ช่วงที่ 11ข้อจำกัดของการเทียบครั้งนี้
ทั้งหมดนี้มาจากงานเดียว คือเทรน policy หุ่นยนต์ด้วย IsaacLab บนการ์ด RTX 4090 ช่วง 4 ถึง 7 ตุลาคม 2026 ในงาน Rough RunPod มีรอบที่สำเร็จ 2 รอบ Vast มีรอบเดียว และเรื่องโปรแกรมลบเครื่องผิดก็เกิดขึ้นครั้งเดียว
ยังมีอีกหลายอย่างที่เราไม่ได้จด เช่นเครื่องอยู่ภูมิภาคไหน และราคาต่อชั่วโมงบนหน้าเว็บของ RunPod เงินฝั่ง Vast วันแรกก็ปนกับงานอื่นในบัญชี ราคาบน Vast เจ้าของเครื่องตั้งเอง จึงขยับได้เรื่อยๆ ถ้าคุณเทรนงานอื่นหรือใช้การ์ดรุ่นอื่น ตัวเลขก็น่าจะออกมาต่างจากนี้
ครั้งหน้าที่เปิดตารางราคา GPU เราจะยังดูราคาต่อชั่วโมงอยู่ เพราะในงานนี้ ตัวเลขนั้นก็ชี้ไปทางเดียวกับต้นทุนต่อรอบที่สำเร็จ แม้ฝั่ง RunPod จะเป็นเลขที่คิดย้อนจากบิล ที่จะเพิ่มคือคำถามอีกข้อ ว่ากว่าจะได้รอบแรกที่สำเร็จ ต้องเปิดเครื่องจ่ายเงินไปกี่รอบ ครั้งนี้ฝั่ง Vast วันแรกเราลองไป 8 เครื่อง แล้วได้รอบที่สำเร็จรอบแรกในอีก 3 วันต่อมา
คำถามที่พบบ่อย
ถาม: เช่า GPU ครั้งแรก ควรเลือก RunPod หรือ Vast
ตอบ: ถ้าเทียบงานเทรนเดียวกันบนสองเจ้า Vast ถูกกว่า ต้นทุนต่อรอบที่สำเร็จของ Vast อยู่ที่ $0.93 เทียบกับประมาณ $2.33 ของ RunPod และต่อ 1,000 iteration ประมาณ $0.41 เทียบกับ $0.81 แต่ Vast มีรอบที่สำเร็จให้นับแค่รอบเดียว และวันแรกบน Vast เราเข้าเครื่องได้ 1 จาก 8 (ส่วนหนึ่งอาจเพราะการตั้งค่าของเราเอง) ถ้าเรื่องเข้าเครื่องได้สำคัญที่สุด ให้ดู Secure Cloud ของ RunPod งาน Rough มี 3 ใน 4 รอบที่เครื่องอยู่จนจบ และ ssh เข้าได้ทั้ง 3 รอบ แต่ก็ยังมีเครื่อง RunPod หายไป 1 เครื่อง ทั้ง 2 ข้อมาจากงานเดียวของเรา ควรจดต้นทุนของงานคุณเองแล้วเทียบอีกที
ถาม: RunPod Secure กับ Community ต่างกันยังไง
ตอบ: ตามหน้าเอกสารของ RunPod Secure Cloud อยู่ในศูนย์ข้อมูลที่มีไฟสำรองและซ่อมได้โดยไม่ต้องปิดเครื่อง ส่วน Community Cloud เป็นเครื่องของเจ้าของการ์ดรายย่อยที่ RunPod คัดมา เราใช้แค่ Secure จึงเทียบจากประสบการณ์ตรงไม่ได้
ถาม: ทำไมไม่ใช้ serverless แทน pod
ตอบ: serverless เหมาะกับงานที่เข้ามาเป็นคำขอสั้นๆ แล้วจบ งานเทรนรันต่อเนื่องหลายชั่วโมงและต้องคุมเครื่องเองทั้งเครื่อง pod จึงเข้ากับงานแบบนี้มากกว่า
ถาม: กันลืมปิดเครื่องยังไงดี
ตอบ: ถ้าไม่มีเซิร์ฟเวอร์ของตัวเอง ให้เติมเงินไว้แค่เท่าที่ยอมจ่าย และปิดการเติมเงินอัตโนมัติ เพราะทั้งสองเจ้าหยุดเครื่องตอนยอดเงินเหลือ $0 (อ้างอิง 4, อ้างอิง 6) ตอนนั้น pod บน RunPod ที่ไม่ได้ต่อ network volume จะเสียไฟล์ทั้งหมด RunPod ยังให้ตั้งเวลาหยุดเครื่องจากบน pod เองได้ด้วย (อ้างอิง 5) แต่เรายังไม่เคยรันคำสั่งนี้เอง เท่าที่เราอ่าน เอกสารของทั้งสองเจ้าไม่ได้พูดถึงการปิดเครื่องเพราะเครื่องว่าง จึงควรตั้งปลุกในมือถือไว้ตรงเวลาที่กะว่าจะปิดเครื่องด้วย ส่วนโปรแกรมที่ปิดเครื่องให้เมื่อเครื่องว่าง ต้องให้ดูหลักฐานว่างานยังเดินอยู่ด้วย เช่นไฟล์ผลที่ยังส่งกลับมา หรือให้งานเขียนใบจองที่มีวันหมดอายุไว้ อย่าให้ตัดสินจากตัวเลขการใช้ GPU อย่างเดียว ของเราเคยโดนลบเครื่องทิ้งกลางการเทรนเพราะตัวเลขนี้รายงานเป็น 0
- RunPod, "Pods overview" (Secure Cloud, Community Cloud, คิดเงินรายวินาที, ดิสก์ 3 แบบ): https://docs.runpod.io/pods/overview
- RunPod, "Serverless overview" (จ่ายเฉพาะตอนมีงาน ลดเหลือศูนย์เมื่อว่าง): https://docs.runpod.io/serverless/overview
- Vast.ai, "Documentation" (ตลาดกลาง GPU เจ้าของเครื่องตั้งราคาเอง): https://docs.vast.ai/
- RunPod, "Billing" (เติมเงินก่อนใช้ ยอดเหลือ $0 แล้ว pod หยุด และ pod ที่ไม่มี network volume ถูกลบ ข้อมูลเอาคืนไม่ได้, auto-pay, แจ้งเตือนยอดต่ำ, เพดานตั้งต้น $80 ต่อชั่วโมง): https://docs.runpod.io/accounts-billing/billing
- RunPod, "Manage Pods" (หยุดกับลบ, volume disk ยังคิดเงินตอนหยุด, ตั้งเวลาหยุดด้วย
runpodctl): https://docs.runpod.io/pods/manage-pods - Vast.ai, "Billing" (คิดค่าเช่ารายวินาที, เติมเงินก่อนใช้, ยอดเหลือศูนย์แล้วเครื่องหยุด, ดิสก์ยังคิดเงิน, ช่วงผ่อนผัน, autobilling): https://docs.vast.ai/guides/reference/billing
- Vast.ai, "Finding & Renting Instances" (คะแนนความเสถียร, เครื่องที่ผ่านและยังไม่ผ่านการยืนยัน, ป้าย Secure Cloud ของศูนย์ข้อมูล, ตัวกรองค้นหา): https://docs.vast.ai/guides/instances/choosing/find-and-rent
- Vast.ai, "search offers" คู่มือ CLI (ตัวกรองตั้งต้น verified=true, ช่อง reliability และ datacenter): https://docs.vast.ai/cli/reference/search-offers
- RunPod, "runpodctl pod" คู่มือ CLI (
runpodctl pod create --gpu-id,runpodctl pod get <pod-id>): https://docs.runpod.io/runpodctl/reference/runpodctl-pod - Vast.ai, "show instance" คู่มือ CLI (
vastai show instance <ID>): https://docs.vast.ai/cli/reference/show-instance - RunPod, "Storage options" (container disk หายเมื่อหยุด, volume disk อยู่ตอนหยุดแต่หายตอนลบ pod, network volume อยู่แยกจาก pod): https://docs.runpod.io/pods/storage/types
- RunPod, "Environment variables" (RunPod ตั้ง
RUNPOD_POD_IDให้เอง): https://docs.runpod.io/pods/references/environment-variables - RunPod, "Connection options" (ปุ่ม Connect, Open Web Terminal, SSH): https://docs.runpod.io/pods/connect-to-a-pod
- Vast.ai, "Serverless" (Vast มีบริการ serverless ด้วย): https://docs.vast.ai/documentation/serverless