কোডিং বেঞ্চমার্কের একটা নোংরা গোপন কথা আছে: মডেলকে নম্বর দিতে হলে তার লেখা জিনিস চালাতে হয়। কয়েকশো প্রশ্নে প্রতিটির দশটি সমাধান নিয়ে pass@k চালানো মানে হাজার হাজার সদ্য তৈরি প্রোগ্রাম — আর সেগুলো কোনো অচেনা লোকের কাছ থেকে এলে আপনি একটিকেও curl | bash করতেন না।
বেশিরভাগ মানুষ ল্যাপটপে subprocess.run আর একটি টাইমআউট দিয়ে শুরু করেন। এটা ততক্ষণ কাজ করে যতক্ষণ না কোনো সমাধান 40 GB-এর ফাইল লিখে ফেলে, মেশিন আটকে না যাওয়া পর্যন্ত প্রসেস তৈরি করতে থাকে, বা চুপচাপ আপনার হোম ডিরেক্টরি পড়ে ফেলে। সমাধান আরও চতুর টাইমআউট নয়। সমাধান হলো এমন জায়গায় সমাধানগুলো চালানো, যা নিয়ে আপনার মাথাব্যথা নেই।
যে সেটআপ কাজ করে
স্যান্ডবক্স হলো Python 3.12, Node.js 22 ও bash-যুক্ত একটি Firecracker microVM, যা প্রায় এক সেকেন্ডে চালু হয় এবং কাজ শেষে মুছে ফেলা হয়। বাইরে যাওয়ার ইন্টারনেট কাজ করে, ভেতরে আসার নয়, আর ভেতরে আপনার কিছুই থাকে না।
ফাঁদটা হলো স্যান্ডবক্সকে একটি ফাংশন কলের মতো দেখা। প্রতিটির ন্যূনতম 60 সেকেন্ডের বিল হয় এবং চালু হতে এক সেকেন্ড লাগে, তাই প্রতিটি সমাধানে একটি স্যান্ডবক্স ধীরও, অপচয়ীও। তার বদলে হারনেসটি ভেতরে রাখুন:
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 লিখে রাখে। গোলমেলে সমাধান শুধু নিজের সাব-প্রসেস বন্ধ করে, পুরো রান নয়। কোনো সমাধান যদি স্যান্ডবক্সটাই নষ্ট করে দেয়, আপনি একটি অংশ হারান, স্যান্ডবক্স নতুন করে তৈরি করেন এবং এগিয়ে যান।
প্রতিবার স্থানান্তরে ফাইল সর্বোচ্চ 5 MB, তাই বড় ডেটাসেট অংশে ভাগ করুন — সমান্তরালভাবে চালানোর জন্য যা আপনি এমনিতেও চাইবেন।
থ্রুপুট, সততার সঙ্গে
একটি অ্যাকাউন্টে 20টি পর্যন্ত স্যান্ডবক্স থাকতে পারে, কিন্তু একই সময়ে 2টি কমান্ড চলে। ব্যাকগ্রাউন্ড টাস্ক চলার সময় গোনা হয়। তাই দ্রুত মূল্যায়ন দেখতে এমন: দুটি স্যান্ডবক্স, প্রতিটি ব্যাকগ্রাউন্ডে নিজের অংশ শেষ করছে — দুটি জায়গার জন্য বিশটি স্যান্ডবক্সের লড়াই নয়।
সাধারণ কোডিং বেঞ্চমার্কের জন্য এটি যথেষ্টের চেয়েও বেশি: বেশিরভাগ সমাধান এক সেকেন্ডের কম সময়ে শেষ হয়, আর একটি স্যান্ডবক্স ঘণ্টায় হাজার হাজার শেষ করে। একটি বিশাল স্যুটে একসঙ্গে অনেক মডেল মূল্যায়ন করতে হলে আপনি ছাদে ধাক্কা খাবেন। তখন নিজের আইসোলেশন চালানো VPS-ই ভালো টুল।
CPU-এর যে নিয়ম জানা দরকার
স্যান্ডবক্স থেমে থেমে চলা কাজের জন্য তৈরি। যে স্যান্ডবক্স 15 মিনিটের বেশি সময় 90%-এর ওপরে CPU-তে থাকে, সেটি অপব্যবহার হিসেবে গণ্য হয় — অস্থায়ী স্যান্ডবক্স বন্ধ করে দেওয়া হয়। স্বাভাবিক মূল্যায়ন, যা দ্রুত চালানো আর ফলাফল লেখার মধ্যে পালাক্রমে চলে, এর কাছাকাছিও যায় না। ঘণ্টার পর ঘণ্টা পূর্ণ 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 |
| প্রতিটি সমাধানে বিল্ড + টেস্ট | plus (2 vCPU, 4 GB) | ~3 ঘণ্টা | $0.40 |
এই সমাধানগুলো তৈরি করা মডেল কলের খরচ চালানোর খরচের চেয়ে বেশি হবে — সাধারণত প্রায় দশ গুণ।
কী এবং পুনরুৎপাদনযোগ্যতা
হারনেস যদি স্যান্ডবক্সের ভেতর থেকে মডেলের API ডাকে — যেমন LLM-as-judge ধাঁচের মূল্যায়নের জন্য — তাহলে কী-টি স্যান্ডবক্সের এনভায়রনমেন্ট ভেরিয়েবল হিসেবে দিন। মানগুলো এনক্রিপ্ট করে রাখা হয়, কখনো লগে লেখা হয় না, আর API শুধু ভেরিয়েবলের নাম ফেরত দেয়।
পুনরুৎপাদনযোগ্যতার জন্য হারনেসে প্যাকেজের সংস্করণ নির্দিষ্ট করে দিন এবং ফলাফলের সঙ্গে স্যান্ডবক্সের ট্যারিফ লিখে রাখুন। প্রতিটি স্যান্ডবক্স একই পরিষ্কার ইমেজ থেকে শুরু হয়, যা আপনার সংখ্যা থেকে "আমার ল্যাপটপে তো চলছিল" নামের চলকটি সরিয়ে দেয়। সত্যি বলতে, শুধু এর জন্যই বদলানো সার্থক।
স্যান্ডবক্স পেজ আর স্যান্ডবক্স ডকুমেন্টেশন দিয়ে শুরু করুন। নতুন অ্যাকাউন্ট $1-এর স্যান্ডবক্স সময় পায় — small ট্যারিফে কয়েক হাজার সমাধানের প্রথম মূল্যায়নের জন্য যথেষ্ট। SDK রেফারেন্স ব্যাকগ্রাউন্ড টাস্ক ও ফাইল স্থানান্তর ব্যাখ্যা করে, আর স্যান্ডবক্সের সীমা ও বিলিং-এ পূর্ণ কোটা টেবিল আছে।
সম্পর্কিত: AI এজেন্টের জন্য স্যান্ডবক্স এবং স্যান্ডবক্সে এজেন্টের প্রথম কাজ।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।