−25%

Windows รายปี ถึง 31 ต.ค. ดูแพ็กเกจ

EQVPS
เริ่มต้นใช้งาน

แซนด์บ็อกซ์สำหรับประเมิน LLM: รันคำตอบที่โมเดลเขียน 1,000 ชิ้นในราคาประมาณหนึ่งเซนต์

การให้คะแนนโมเดลด้วยโจทย์เขียนโปรแกรม หมายถึงการรันโปรแกรมนับพันที่ไม่มีใครเขียนด้วยมือ ให้รันในแซนด์บ็อกซ์ใช้ครั้งเดียวบน microVM แทนแล็ปท็อปของคุณ คิดเงินรายวินาที พร้อมข้อสังเกตตรง ๆ เรื่อง throughput และข้อจำกัด CPU

benchmark ด้านโค้ดมีความลับที่ไม่ค่อยมีใครพูดถึง คือการจะให้คะแนนโมเดล คุณต้อง รัน สิ่งที่มันเขียน การรัน pass@k กับโจทย์หลายร้อยข้อ ข้อละสิบคำตอบ เท่ากับโปรแกรมที่เพิ่งสร้างใหม่นับพัน และถ้ามาจากคนแปลกหน้า คุณจะไม่ curl | bash แม้แต่ตัวเดียว

คนส่วนใหญ่เริ่มบนแล็ปท็อปด้วย subprocess.run และ timeout วิธีนี้ใช้ได้จนกว่าจะมีคำตอบสักตัวเขียนไฟล์ขนาด 40 GB, fork โพรเซสจนเครื่องค้าง หรือแอบอ่านโฮมไดเรกทอรีของคุณ ทางแก้ไม่ใช่ timeout ที่ฉลาดกว่า ทางแก้คือรันคำตอบในที่ที่คุณไม่ต้องห่วง

การตั้งค่าที่ได้ผล

แซนด์บ็อกซ์คือ Firecracker microVM ที่มี Python 3.12, Node.js 22 และ bash เริ่มทำงานในราวหนึ่งวินาทีและถูกลบเมื่อคุณใช้เสร็จ อินเทอร์เน็ตขาออกใช้ได้ ขาเข้าใช้ไม่ได้ และข้างในไม่มีอะไรของคุณเลย

กับดักคือการมองแซนด์บ็อกซ์เป็นการเรียกฟังก์ชัน แต่ละตัวคิดเงินอย่างน้อย 60 วินาทีและใช้เวลาเริ่มหนึ่งวินาที แซนด์บ็อกซ์ต่อคำตอบจึงทั้งช้าและเปลือง ให้วาง harness ไว้ข้างในแทน:

from eqvps import Sandbox

with Sandbox.create(tariff="standard", ttl=4 * 3600) as sb:
    sb.upload("/root/harness.py", open("harness.py").read())
    sb.upload("/root/samples.jsonl", open("slice_03.jsonl").read())
    task = sb.exec("python3 /root/harness.py /root/samples.jsonl > /root/results.jsonl",
                   background=True)
    task.wait(poll_interval=10)
    results = sb.download_text("/root/results.jsonl")

ข้างใน harness.py รันคำตอบแต่ละตัวในโพรเซสย่อยที่มี timeout สั้น ๆ ของตัวเอง และบันทึกผลเป็น pass, fail หรือ timeout คำตอบที่ทำตัวผิดปกติจะฆ่าแค่โพรเซสย่อยของมันเอง ไม่ใช่การรันทั้งหมด ถ้าคำตอบสักตัวทำให้แซนด์บ็อกซ์พังได้ คุณเสียแค่ส่วนเดียว สร้างแซนด์บ็อกซ์ใหม่ แล้วทำต่อ

ไฟล์ส่งได้สูงสุด 5 MB ต่อครั้ง ดังนั้นให้แบ่งชุดข้อมูลใหญ่เป็นส่วน ๆ ซึ่งคุณก็ต้องทำอยู่แล้วเพื่อการรันขนาน

Throughput แบบตรงไปตรงมา

บัญชีหนึ่งมีแซนด์บ็อกซ์ได้สูงสุด 20 ตัว แต่ ทำงานพร้อมกันได้ 2 คำสั่ง งานเบื้องหลังนับรวมตราบที่ยังรันอยู่ การประเมินที่เร็วจึงหน้าตาเป็นแซนด์บ็อกซ์สองตัวที่ต่างคนต่างบดส่วนของตัวเองอยู่เบื้องหลัง ไม่ใช่แซนด์บ็อกซ์ยี่สิบตัวแย่งกันสองช่อง

สำหรับ benchmark ด้านโค้ดทั่วไป แค่นี้ก็เหลือเฟือ คำตอบส่วนใหญ่จบในเวลาไม่ถึงวินาที และแซนด์บ็อกซ์ตัวเดียวทำได้หลายพันคำตอบต่อชั่วโมง ถ้าคุณต้องประเมินหลายโมเดลพร้อมกันกับชุดทดสอบขนาดมหึมา คุณจะชนเพดาน ถึงตอนนั้น VPS ที่รันการแยกส่วนของคุณเองคือเครื่องมือที่ดีกว่า

กฎเรื่อง CPU ที่ควรรู้

แซนด์บ็อกซ์ออกแบบมาสำหรับงานที่ใช้ทรัพยากรเป็นช่วง ๆ แซนด์บ็อกซ์ที่ ใช้ CPU เกิน 90% นานกว่า 15 นาที ถือว่าเป็นการใช้งานในทางที่ผิด แซนด์บ็อกซ์ชั่วคราวจะถูกหยุด การประเมินปกติที่สลับไปมาระหว่างการรันสั้น ๆ กับการบันทึกผลไม่เข้าใกล้เกณฑ์นี้เลย แต่ benchmark ที่เผา CPU เต็มเป็นชั่วโมง (คอมไพล์โปรเจกต์ใหญ่ทุกคำตอบ หรือ stress test เชิงตัวเลข) จะเข้าใกล้ สำหรับงานแบบนั้นให้เช่า VPS รายเดือน: แพ็กเกจ AI agent ให้ 4 vCPU และ 4 GB ในราคา $10

รันหนึ่งครั้งเสียเท่าไร

คุณจ่ายรายวินาทีตาม vCPU และ RAM ของแพ็กเกจ ขั้นต่ำ 60 วินาที จากยอดเงินเติมล่วงหน้า

ปริมาณงานแพ็กเกจเวลาค่าใช้จ่ายโดยประมาณ
คำตอบ Python สั้น ๆ 1,000 ชิ้นsmall (0.5 vCPU, 1 GB)~20 นาที$0.011
5,000 คำตอบ อนุญาต numpystandard (1 vCPU, 2 GB)~2 ชม.$0.13
Build + เทสต์ทุกคำตอบplus (2 vCPU, 4 GB)~3 ชม.$0.40

การเรียกโมเดลเพื่อสร้างคำตอบเหล่านั้นจะแพงกว่าการรันเสียอีก โดยทั่วไปราวสิบเท่า

คีย์และการทำซ้ำได้

ถ้า harness เรียก API ของโมเดลจากภายในแซนด์บ็อกซ์ เช่น เพื่อให้คะแนนแบบ LLM-as-judge ให้ส่งคีย์เป็นตัวแปรสภาพแวดล้อมของแซนด์บ็อกซ์ ค่าต่าง ๆ จะถูกเก็บแบบเข้ารหัส ไม่ถูกบันทึกลงล็อก และ API จะคืนให้แค่ชื่อตัวแปร

เพื่อให้ทำซ้ำผลได้ ให้ล็อกเวอร์ชันแพ็กเกจใน harness และบันทึกแพ็กเกจของแซนด์บ็อกซ์ไว้คู่กับผลลัพธ์ แซนด์บ็อกซ์ทุกตัวเริ่มจากอิมเมจสะอาดเดียวกัน ซึ่งตัดตัวแปร "บนแล็ปท็อปผมรันได้นะ" ออกจากตัวเลขของคุณ พูดตรง ๆ แค่ข้อนี้ข้อเดียวก็คุ้มที่จะเปลี่ยนแล้ว

เริ่มจาก หน้าแซนด์บ็อกซ์ และ เอกสารแซนด์บ็อกซ์ บัญชีใหม่ได้เวลาแซนด์บ็อกซ์มูลค่า $1 พอสำหรับการประเมินครั้งแรกหลายพันคำตอบบนแพ็กเกจ small เอกสารอ้างอิง SDK อธิบายงานเบื้องหลังและการส่งไฟล์ ส่วน ข้อจำกัดและการคิดเงินของแซนด์บ็อกซ์ มีตารางโควตาฉบับเต็ม

เกี่ยวข้อง: แซนด์บ็อกซ์สำหรับ AI agent และ งานแรกของ agent ในแซนด์บ็อกซ์

พร้อม deploy แล้วหรือยัง? จ่ายด้วยคริปโต ไม่ต้อง KYC — ใช้งานได้ในราวหนึ่งนาที

Deploy เลย →

FAQ

ทำไมการประเมินต้องใช้แซนด์บ็อกซ์?

เพราะคุณกำลังรันโปรแกรมนับพันที่โมเดลเขียน ส่วนใหญ่ไม่มีพิษภัย บางตัววนลูปไม่รู้จบ และบางตัวลบไฟล์หรือเปิดการเชื่อมต่อเครือข่าย บนเครื่องทำงานของคุณนั่นคือความเสี่ยงต่อข้อมูล แต่ในแซนด์บ็อกซ์มันเป็นแค่คำตอบที่ล้มเหลว

ควรสร้างแซนด์บ็อกซ์หนึ่งตัวต่อหนึ่งคำตอบไหม?

โดยทั่วไปไม่ควร การสร้างแซนด์บ็อกซ์ใช้เวลาราวหนึ่งวินาทีและคิดเงินอย่างน้อย 60 วินาที แซนด์บ็อกซ์ต่อคำตอบจึงเปลืองทั้งสองอย่าง ให้รัน harness ภายในแซนด์บ็อกซ์ตัวเดียวที่รันคำตอบจำนวนมาก แต่ละคำตอบมี timeout ของตัวเอง แล้วสร้างแซนด์บ็อกซ์ใหม่เมื่อเปลี่ยนโมเดลหรือเมื่อมีอะไรทำให้มันพัง

ไปได้เร็วแค่ไหน?

บัญชีหนึ่งรันคำสั่งพร้อมกันได้สูงสุด 2 คำสั่ง ข้ามแซนด์บ็อกซ์ได้สูงสุด 20 ตัว รูปแบบที่ใช้ได้จริงคือแซนด์บ็อกซ์ไม่กี่ตัว แต่ละตัวรัน harness ของคุณเป็นงานเบื้องหลังที่ไล่ทำชุดข้อมูลส่วนหนึ่ง

รัน benchmark ยาว ๆ เป็นชั่วโมงได้ไหม?

ได้ ถ้าเป็นงานเบื้องหลัง จนกว่าอายุของแซนด์บ็อกซ์จะหมด (24 ชั่วโมงสำหรับแบบชั่วคราว) แต่แซนด์บ็อกซ์ที่ใช้ CPU เต็มนานกว่า 15 นาทีจะถือว่าเป็นการใช้งานในทางที่ผิด การประเมินแบบเป็นช่วง ๆ ไม่มีปัญหา ส่วนการคำนวณหนักต่อเนื่องหลายชั่วโมงควรอยู่บน VPS

แซนด์บ็อกซ์เรียก API ของโมเดลฉันได้ไหม?

อินเทอร์เน็ตขาออกเปิดอยู่ จึงทำได้ ให้ส่งคีย์ API เป็นตัวแปรสภาพแวดล้อมของแซนด์บ็อกซ์ ซึ่งเก็บแบบเข้ารหัสและ API จะไม่ส่งคืนเลย แทนการแปะลงในโค้ดที่สร้างขึ้น

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง