
Code-as-World কী?
Code-as-World হলো এক্সিকিউটেবল কোডের মাধ্যমে ভৌত জগতকে উপস্থাপন করার একটি গবেষণা প্রকল্প। এর মূল ধারণা হলো, পিক্সেল কোনো দৃশ্য সম্পর্কে প্রমাণ দেয়, কিন্তু পর্যবেক্ষিত দৃশ্যটি তৈরি করা বস্তু, অবস্থা, কাঠামো, গতিশীলতা বা প্রক্রিয়াগুলোকে সরাসরি সংজ্ঞায়িত করে না।
পর্যবেক্ষণ থেকে এক্সিকিউটেবল বিশ্ব-উপস্থাপনা আবিষ্কারের জন্য প্রকল্পটি পুনরাবৃত্তিমূলক সিমুলেশন ও যাচাই-ভিত্তিক একটি এজেন্টিক প্রক্রিয়া ব্যবহার করে। এই উপস্থাপনাগুলো ভিজ্যুয়াল প্রমাণকে পুনর্ব্যবহারযোগ্য ভৌত ডেটায় রূপান্তর করে এবং পরিমাণগত ভৌত যুক্তিকে সমর্থন করে।

রিলিজটিতে দুটি ভিশন-ল্যাঙ্গুয়েজ চেকপয়েন্টের জন্য স্থানীয় ইনফারেন্স ও মূল্যায়ন সহায়তা রয়েছে: Code-as-World-VL-4B এবং Code-as-World-VL-9B। এতে vLLM-এর মাধ্যমে OpenAI-সামঞ্জস্যপূর্ণ সার্ভিং এবং MuJoCo দিয়ে তৈরি ভিডিও-নির্ভর ভৌত বিমূর্তায়নের একটি উদাহরণও রয়েছে।
মূল সক্ষমতা
- এক্সিকিউটেবল বিশ্ব-উপস্থাপনা: পিক্সেলকে দৃশ্যের সম্পূর্ণ অন্টোলজি হিসেবে বিবেচনা না করে ভৌত অবস্থা, গতিশীলতা ও প্রক্রিয়ার মডেল তৈরি করে।
- প্রকাশিত দুটি চেকপয়েন্ট: 4B এবং 9B Code-as-World-VL মডেলের মধ্যে বেছে নিন।
- QuantiPhy মূল্যায়ন: যাচাই ভিডিওগুলোর ওপর পরিমাণগত ভৌত যুক্তির মূল্যায়ন চালান এবং ইভ্যালুয়েটর-সামঞ্জস্যপূর্ণ প্রেডিকশন ফাইল তৈরি করুন।
- OpenAI-সামঞ্জস্যপূর্ণ সার্ভিং: স্ট্যান্ডার্ড vLLM API সার্ভার ব্যবহার করে যেকোনো একটি চেকপয়েন্ট প্রকাশ করুন।
- সিমুলেশন উদাহরণ: অন্তর্ভুক্ত ব্যালিস্টিক ফুটবল কেস চালান এবং এর রেন্ডার করা ভিডিও ও ট্র্যাজেক্টরি সংরক্ষণ করুন।
পূর্বশর্ত
CUDA-সক্ষম হোস্টে Python 3.10 বা 3.11 ব্যবহার করুন। Git এবং hf download কমান্ডগুলোতে ব্যবহৃত Hugging Face CLI-ও প্রয়োজন হবে। আপনি 4B চেকপয়েন্ট, 9B চেকপয়েন্ট, নাকি উভয়টি ব্যবহার করছেন তার ওপর মডেল সংরক্ষণ ও GPU মেমরির প্রয়োজনীয়তা নির্ভর করবে।
CUDA পরিবেশ থেকে রিপোজিটরির কমান্ডগুলো অনুসরণ করুন। README-তে শুধুমাত্র CPU-ভিত্তিক ইনফারেন্সের কোনো নির্দেশনা নেই।
Code-as-World ইনস্টল করুন
1. রিপোজিটরি ক্লোন করুন
git clone https://github.com/MirroS-Lab/Code-as-World.git
cd Code-as-World2. ভার্চুয়াল পরিবেশ তৈরি ও সক্রিয় করুন
python -m venv .venv
source .venv/bin/activateউপরের সক্রিয়করণ কমান্ডটি Unix-সদৃশ শেলের জন্য প্রযোজ্য। সক্রিয় করার পর প্রকল্পের দেওয়া ইনফারেন্স নির্ভরতাগুলো ইনস্টল করুন:
pip install -r requirements/inference.txt3. চেকপয়েন্ট ডাউনলোড করুন
hf download MirroS-Lab/Code-as-World-VL-4B --local-dir weights/4b
hf download MirroS-Lab/Code-as-World-VL-9B --local-dir weights/9bএই কমান্ডগুলো 4B ও 9B মডেলকে যথাক্রমে weights/4b এবং weights/9b-এ রাখে। আপনি যদি কেবল একটি মডেল ব্যবহার করতে চান, তাহলে শুধু সংশ্লিষ্ট চেকপয়েন্টটি ডাউনলোড করুন।
QuantiPhy মূল্যায়ন চালান
QuantiPhy হলো এই রিলিজে ব্যবহৃত পরিমাণগত মূল্যায়ন স্যুট। Code-as-World মূল্যায়ন চালানোর আগে QuantiPhy ক্লোন করুন এবং এর যাচাই ভিডিওগুলো ডাউনলোড করুন।
1. মূল্যায়নের ডেটা প্রস্তুত করুন
git clone https://github.com/Paulineli/QuantiPhy.git /path/to/QuantiPhy
hf download PaulineLi/QuantiPhy-validation \
--repo-type dataset \
--local-dir /path/to/QuantiPhy-validation/path/to/QuantiPhy এবং /path/to/QuantiPhy-validation-এর পরিবর্তে আপনার সিস্টেমের প্রকৃত অবস্থান ব্যবহার করুন।
2. 4B মডেল মূল্যায়ন করুন
Code-as-World রিপোজিটরি থেকে চালান:
python -m code_as_world.evaluation 4b \
--input-csv /path/to/QuantiPhy/quantiphy_validation.csv \
--video-dir /path/to/QuantiPhy-validation/validation_videos
3. 9B মডেল মূল্যায়ন করুন
python -m code_as_world.evaluation 9b \
--input-csv /path/to/QuantiPhy/quantiphy_validation.csv \
--video-dir /path/to/QuantiPhy-validation/validation_videosপ্রতিটি রান outputs/quantiphy/-এ তিন ধরনের আর্টিফ্যাক্ট লেখে: একটি ইভ্যালুয়েটর-সামঞ্জস্যপূর্ণ প্রেডিকশন CSV, পৃথক রানের একটি মেট্রিক সারাংশ এবং মডেলের কাঁচা জেনারেশন। পৃথক স্কোরের পেছনের প্রতিক্রিয়াগুলো পরিদর্শনের সময় কাঁচা আউটপুট সংরক্ষণ করা উপযোগী।
4. অফিসিয়াল ইভ্যালুয়েটর চালান
প্রেডিকশন CSV ফাইল তৈরি করার পর pandas ইনস্টল করুন এবং অফিসিয়াল QuantiPhy ইভ্যালুয়েটর চালু করুন:
pip install pandas
python /path/to/QuantiPhy/evaluator.py \
outputs/quantiphy \
outputs/quantiphy_metrics \
--gt_file /path/to/QuantiPhy/quantiphy_validation.csvএই কমান্ডটি outputs/quantiphy-এ পাওয়া প্রেডিকশন ফাইলগুলোকে quantiphy_validation.csv-এর সঙ্গে মূল্যায়ন করে এবং ফলস্বরূপ মেট্রিকগুলো outputs/quantiphy_metrics-এ লেখে।
vLLM দিয়ে মডেল সার্ভ করুন
চেকপয়েন্টগুলো OpenAI-সামঞ্জস্যপূর্ণ vLLM এন্ডপয়েন্টের মাধ্যমে প্রকাশ করা যায়। নিচের কমান্ডটি GPU 0-তে 4B চেকপয়েন্ট সার্ভ করে:
CUDA_VISIBLE_DEVICES=0 vllm serve weights/4b \
--served-model-name code-as-world-4b \
--chat-template code_as_world/templates/qwen3_5_no_think.jinja \
--chat-template-content-format openai \
--default-chat-template-kwargs '{"enable_thinking":false}' \
--max-model-len 4608 \
--gpu-memory-utilization 0.90 \
--media-io-kwargs '{"video":{"num_frames":16,"fps":-1,"video_backend":"openpangu"}}' \
--mm-processor-kwargs '{"do_sample_frames":false}' \
--mm-processor-cache-gb 0 \
--generation-config vllmসার্ভারটি মডেলটিকে code-as-world-4b নামে নিবন্ধন করে। এটি প্রকল্পের থিংকিং-বিহীন চ্যাট টেমপ্লেট ব্যবহার করে, সর্বাধিক মডেল দৈর্ঘ্য 4608 নির্ধারণ করে এবং openpangu ব্যাকএন্ডের মাধ্যমে ১৬টি ফ্রেমের জন্য ভিডিও ইনপুট কনফিগার করে।
বৃহত্তর চেকপয়েন্ট পরিবেশন করতে weights/4b-এর পরিবর্তে weights/9b এবং code-as-world-4b-এর পরিবর্তে code-as-world-9b লিখুন।
ভিডিও-চালিত অ্যাবস্ট্রাকশন উদাহরণ চালান
রিপোজিটরিতে MuJoCo-নির্ভর একটি ব্যালিস্টিক ফুটবল উদাহরণ রয়েছে। প্রথমে আলাদা সিমুলেশন নির্ভরতাগুলো ইনস্টল করুন:
pip install -r requirements/simulation.txtএরপর সিমুলেশন চালু করুন:
python -m code_as_world.simulationসিমুলেশনটি রেন্ডার করা ভিডিও এবং ট্র্যাজেক্টরি outputs/simulations/-এ লিখে রাখে।
শুধু ট্র্যাজেক্টরি তৈরি করুন
রেন্ডার করা ভিডিওর প্রয়োজন না হলে রেন্ডারিং বন্ধ করুন:
python -m code_as_world.simulation --no-renderশুধু ট্র্যাজেক্টরি ডেটা প্রয়োজন হলে বা রেন্ডারিং অতিরিক্ত ওভারহেড তৈরি করলে এই মোডটি কার্যকর।
উন্নত ব্যবহারের পরামর্শ
- সচেতনভাবে মডেল নির্বাচন করুন: ডাউনলোড করা চেকপয়েন্টের সঙ্গে সামঞ্জস্য রেখে
4bবা9bমূল্যায়ন আর্গুমেন্ট ব্যবহার করুন। - শুধু প্রয়োজনীয় জিনিস ডাউনলোড করুন: আপনার ওয়ার্কফ্লোতে একটি মডেল সাইজই ব্যবহৃত হলে দুটি চেকপয়েন্ট সংরক্ষণ করা এড়িয়ে চলুন।
- কাঁচা জেনারেশন সংরক্ষণ করুন: কোনো প্রেডিকশন নির্দিষ্ট স্কোর পাওয়ার কারণ অনুসন্ধান করার সময়
outputs/quantiphy/-এর ফাইলগুলো পর্যালোচনা করুন। - উভয় মূল্যায়ন স্তর চালান: Code-as-World কমান্ড একটি একক-রান সারাংশ তৈরি করে, আর অফিসিয়াল QuantiPhy মূল্যায়নকারী একসঙ্গে তৈরি করা প্রেডিকশন CSV ফাইলগুলো মূল্যায়ন করতে পারে।
- সরবরাহ করা চ্যাট টেমপ্লেট বজায় রাখুন: পরিবেশন রেসিপিতে স্পষ্টভাবে
code_as_world/templates/qwen3_5_no_think.jinjaব্যবহার করা হয়েছে এবং থিংকিং বন্ধ রাখা হয়েছে। নথিভুক্ত কনফিগারেশন পুনরুৎপাদনের সময় এই সেটিংগুলো বজায় রাখুন। - GPU নির্বাচন সতর্কতার সঙ্গে সামঞ্জস্য করুন: পরিবেশনের উদাহরণে
CUDA_VISIBLE_DEVICES=0এবং0.90GPU মেমরি ব্যবহারের মান ব্যবহার করা হয়েছে। আপনার CUDA হোস্ট অনুযায়ী দৃশ্যমান ডিভাইস নির্বাচন করুন, তবে অন্যান্য পরিবর্তনগুলোকে প্রকাশিত রেসিপি থেকে বিচ্যুতি হিসেবে বিবেচনা করুন। - প্রয়োজনে রেন্ডারিং এড়িয়ে চলুন: শুধু ট্র্যাজেক্টরি আউটপুট প্রয়োজন হলে সিমুলেশন কমান্ডে
--no-renderযোগ করুন।
আরও পড়ুন
গবেষণার পটভূমি ও পদ্ধতির জন্য প্রযুক্তিগত প্রতিবেদন, প্রকল্পের পৃষ্ঠা এবং MirroS ব্লগ পোস্ট দেখুন।
উপসংহার
Code-as-World ভৌত দৃশ্যের এক্সিকিউটেবল উপস্থাপনা নিয়ে কাজ করার জন্য একটি ব্যবহারিক রিলিজ প্রদান করে। ইনফারেন্স পরিবেশ ইনস্টল করে একটি চেকপয়েন্ট ডাউনলোড করার পর আপনি QuantiPhy মূল্যায়ন পুনরুৎপাদন করতে, vLLM-এর মাধ্যমে একটি মডেল পরিবেশন করতে অথবা অন্তর্ভুক্ত MuJoCo সিমুলেশন চালাতে পারবেন। সম্মিলিতভাবে, এই ওয়ার্কফ্লোগুলো দেখায় কীভাবে দৃশ্যমান পর্যবেক্ষণ সুস্পষ্ট ও যাচাইযোগ্য ভৌত যুক্তিকে সহায়তা করতে পারে।
