კოდის ბენჩმარკებს უსიამოვნო საიდუმლო აქვთ: მოდელის შესაფასებლად მისი დაწერილი უნდა გაუშვათ. pass@k-ის გაშვება რამდენიმე ასეულ ამოცანაზე, თითოეულზე ათი ამოხსნით, ათასობით ახლად შექმნილ პროგრამას ნიშნავს — და უცნობისგან რომ მოსულიყო, ერთსაც კი არ გაუშვებდით curl | bash-ით.
ადამიანების უმეტესობა ლეპტოპზე subprocess.run-ითა და ტაიმაუტით იწყებს. ეს მუშაობს მანამ, სანამ რომელიმე ამოხსნა 40 GB-იან ფაილს არ ჩაწერს, პროცესებს მანამ არ შექმნის, სანამ მანქანა არ გაიჭედება, ან ჩუმად არ წაიკითხავს თქვენს საწყის დირექტორიას. გამოსავალი უფრო ჭკვიანი ტაიმაუტი არ არის. გამოსავალია ამოხსნების გაშვება ისეთ ადგილას, რომელიც არ გენანებათ.
დაყენება, რომელიც მუშაობს
sandbox არის Firecracker microVM Python 3.12-ით, Node.js 22-ითა და bash-ით, რომელიც დაახლოებით ერთ წამში ირთვება და დასრულებისას იშლება. გამავალი ინტერნეტი მუშაობს, შემომავალი — არა, და შიგნით თქვენი არაფერია.
ხაფანგი ის არის, რომ sandbox-ს ფუნქციის გამოძახებასავით მოეპყრათ. თითოეული მინიმუმ 60 წამით ითვლება და ჩართვას ერთი წამი სჭირდება, ამიტომ თითო ამოხსნაზე თითო sandbox ნელიც არის და ფუჭიც. ამის ნაცვლად 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 თითოეულ ამოხსნას საკუთარი მოკლე ტაიმაუტით ქვეპროცესში უშვებს და აღრიცხავს pass-ს, fail-ს ან timeout-ს. ურჩი ამოხსნა მხოლოდ საკუთარ ქვეპროცესს კლავს და არა მთელ გაშვებას. თუ ამოხსნა თავად sandbox-ს გააფუჭებს, ერთ ნაწილს კარგავთ, sandbox-ს თავიდან ქმნით და აგრძელებთ.
ფაილები თითო გადაცემაზე 5 MB-მდეა, ამიტომ დიდი მონაცემთა ნაკრებები ნაწილებად დაყავით — რაც პარალელიზმისთვის ისედაც გინდათ.
გამტარუნარიანობა, გულწრფელად
ანგარიშს შეუძლია ჰქონდეს 20 sandbox-მდე, მაგრამ ერთდროულად 2 ბრძანება სრულდება. ფონური ამოცანა ითვლება, სანამ მუშაობს. ასე რომ, სწრაფი შეფასება ასე გამოიყურება: ორი sandbox, თითოეული ფონურად საკუთარ ნაწილს ამუშავებს — და არა ოცი sandbox, რომლებიც ორ ადგილზე ჩხუბობენ.
ტიპური კოდის ბენჩმარკებისთვის ეს საკმარისზე მეტია: ამოხსნების უმეტესობა წამზე ნაკლებ დროში სრულდება და ერთი sandbox საათში ათასობითს ამუშავებს. თუ ბევრი მოდელის ერთდროულად შეფასება გჭირდებათ უზარმაზარ ნაკრებზე, ჭერს მიაღწევთ. ამ დროს უკეთესი ინსტრუმენტი VPS-ია, რომელიც თქვენს იზოლაციას ამუშავებს.
CPU-ის წესი, რომელიც უნდა იცოდეთ
sandbox-ები პერიოდული დატვირთვისთვისაა შექმნილი. sandbox, რომელიც 15 წუთზე მეტხანს 90%-ზე მაღალ CPU-ზეა, ბოროტად გამოყენებად ითვლება — დროებითი sandbox ჩერდება. ჩვეულებრივი შეფასებები, რომლებიც სწრაფ გაშვებებსა და შედეგების აღრიცხვას შორის მონაცვლეობს, ამას ახლოსაც ვერ ეკარება. ბენჩმარკი, რომელიც საათობით სრულ CPU-ს წვავს (დიდი პროექტის კომპილაცია თითო ამოხსნაზე, რიცხვითი სტრეს-ტესტები), კი მიაღწევს. ამისთვის აიღეთ VPS თვიურად: AI agent ტარიფი $10-ად 4 vCPU-სა და 4 GB-ს იძლევა.
რა ღირს გაშვება
ტარიფის vCPU-სა და RAM-ს წამობრივად იხდით, მინიმუმ 60 წამი, წინასწარ გადახდილი ბალანსიდან.
| დატვირთვა | ტარიფი | დრო | სავარაუდო ღირებულება |
|---|---|---|---|
| 1 000 მოკლე Python ამოხსნა | small (0.5 vCPU, 1 GB) | ~20 წთ | $0.011 |
| 5 000 ამოხსნა, numpy დაშვებულია | standard (1 vCPU, 2 GB) | ~2 სთ | $0.13 |
| Build + ტესტები თითო ამოხსნაზე | plus (2 vCPU, 4 GB) | ~3 სთ | $0.40 |
მოდელის გამოძახებები, რომლებიც ამ ამოხსნებს ქმნის, გაშვებაზე მეტი დაგიჯდებათ — ჩვეულებრივ დაახლოებით ათჯერ მეტი.
გასაღებები და განმეორებადობა
თუ harness sandbox-ის შიგნიდან მოდელის API-ს იძახებს — მაგალითად, LLM-as-judge სტილის შეფასებისთვის — გასაღები sandbox-ის გარემოს ცვლადად გადაეცით. მნიშვნელობები დაშიფრულად ინახება, ლოგებში არასდროს იწერება, API კი მხოლოდ ცვლადების სახელებს აბრუნებს.
განმეორებადობისთვის harness-ში პაკეტების ვერსიები დააფიქსირეთ და შედეგებთან ერთად sandbox-ის ტარიფი ჩაიწერეთ. ყოველი sandbox ერთი და იმავე სუფთა იმიჯიდან იწყება, რაც თქვენი რიცხვებიდან „ჩემს ლეპტოპზე მუშაობდა“ ცვლადს აქრობს. გულწრფელად, მხოლოდ ამის გამოც ღირს გადასვლა.
დაიწყეთ sandbox-ების გვერდით და sandbox-ის დოკუმენტაციით. ახალი ანგარიშები იღებს $1-ის sandbox-დროს — საკმარისს პირველი შეფასებისთვის რამდენიმე ათასი ამოხსნით small ტარიფზე. SDK-ის ცნობარი ფონურ ამოცანებსა და ფაილების გადაცემას ხსნის, sandbox-ის ლიმიტები და ბილინგი კი კვოტების სრულ ცხრილს შეიცავს.
დაკავშირებული: Sandbox AI აგენტებისთვის და აგენტის პირველი ამოცანა sandbox-ში.
კომენტარები
ჯერ არ არის კომენტარები. იყავით პირველი.