Safetensors হলো টেনসর নিরাপদে জমা রাখার জন্য বিশেষভাবে তৈরি করা একটি মডেল ফরম্যাট। এই ফরম্যাটটি অন্যান্য বিকল্পের চেয়ে দ্রুত এবং ভালো পারফর্ম করে। Safetensors শুধু দ্রুতই নয়, এটি সরলতা ও নিরাপত্তার কথা মাথায় রেখে তৈরি করা হয়েছে, যা একে মেশিন লার্নিংয়ের অনেক পুরনো ফরম্যাট থেকে আলাদা করেছে।
কেন Safetensors বেছে নেবেন?
মেশিন লার্নিং এবং ডেটা স্টোরেজের জন্য অনেক ফরম্যাট রয়েছে, তাহলে কেন Safetensors আলাদা? চলুন, কিছু ফরম্যাটের সঙ্গে তুলনা করে দেখি, Safetensors কীভাবে গুরুত্বপূর্ণ বিষয়গুলোতে কাজ করে:
- নিরাপদ: র্যান্ডমলি ডাউনলোড করা কোনো ফাইল কি কোনো কোড চালাতে পারবে?
- জিরো-কপি: ফাইলটি পড়তে অরিজিনাল ফাইলের চেয়ে বেশি মেমোরি লাগে কি?
- লেইজি লোডিং: সবকিছু লোড না করে কি ফাইলটি দেখা যায়? পুরো ফাইল স্ক্যান না করে কি শুধু কিছু টেনসর লোড করা যায়? (ডিস্ট্রিবিউটেড সেটিং-এ এটা জরুরি)
- লেআউট কন্ট্রোল: আলাদা টেনসরের দ্রুত অ্যাক্সেসের জন্য ফাইলের মধ্যে টেনসরের লোকেশন কন্ট্রোল করা যায় কি?
- ফাইলের সাইজের লিমিট: ফাইলের সাইজের কোনো লিমিট আছে কি?
- ফ্লেক্সিবিলিটি: কাস্টম কোড ফরম্যাটে সেভ করে পরে কোনো কোড ছাড়াই ব্যবহার করা যায় কি?
- Bfloat16: ফরম্যাটটি কি কোনো ঝামেলা ছাড়াই Bfloat16 সাপোর্ট করে?
এখানে ✔ মানে ফিচারটি আছে, ❌ মানে নেই, ~ মানে আংশিক আছে, এবং ? মানে জানা নেই।
ফরম্যাট | নিরাপদ | জিরো-কপি | লেইজি লোডিং | ফাইলের সাইজের লিমিট নেই | লেআউট কন্ট্রোল | ফ্লেক্সিবিলিটি | Bfloat16 |
---|---|---|---|---|---|---|---|
SafeTensors | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ |
pickle (PyTorch) | ❌ | ❌ | ❌ | ✔ | ❌ | ✔ | ✔ |
H5 (Tensorflow) | ✔ | ❌ | ✔ | ✔ | ~ | ~ | ❌ |
SavedModel (Tensorflow) | ✔ | ❌ | ❌ | ✔ | ✔ | ❌ | ✔ |
MsgPack (flax) | ✔ | ✔ | ❌ | ✔ | ❌ | ❌ | ✔ |
Protobuf (ONNX) | ✔ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔ |
Cap’n’Proto | ✔ | ✔ | ~ | ✔ | ✔ | ~ | ❌ |
Numpy (npy,npz) | ✔ | ? | ? | ❌ | ✔ | ❌ | ❌ |
pdparams (Paddle) | ❌ | ❌ | ❌ | ✔ | ❌ | ✔ | ✔ |
এই তুলনা থেকে দেখা যাচ্ছে, Safetensors অন্যান্য মডেল ফরম্যাটের চেয়ে ভালো বা সমান সুবিধা দেয়। বিশেষ করে, ‘জিরো-কপি’ ডেটা ম্যানিপুলেশন এবং লেইজি লোডিংয়ের জন্য এটি উল্লেখযোগ্য, যা মেশিন লার্নিংয়ের কাজে ডেটা হ্যান্ডলিংয়ের দক্ষতা বাড়াতে পারে।
কিছু গুরুত্বপূর্ণ তুলনা
সব ফরম্যাটের নিজস্ব কিছু সুবিধা আছে, তবে দেখা যাক Safetensors সাধারণভাবে ব্যবহৃত ফরম্যাটগুলোর সঙ্গে কেমন পারফর্ম করে:
- Pickle (PyTorch): এটি বহুল ব্যবহৃত ফরম্যাট, তবে এর একটি বড় অসুবিধা হলো এটি নিরাপদ নয়, কারণ এটি যেকোনো কোড এক্সিকিউট করতে পারে।
- H5 (Tensorflow): এটি নিরাপদ হলেও জিরো-কপি সাপোর্ট করে না, যা ডেটা ম্যানিপুলেশনের জন্য খুবই দরকারি।
- SavedModel (Tensorflow): এই ফরম্যাটটি শুধু টেনসরফ্লোর জন্য এবং অন্যান্য অ্যাপ্লিকেশনের জন্য তেমন সুবিধা নেই।
- Numpy (npz): এটি জনপ্রিয় হলেও bfloat16 সাপোর্ট করে না, যা এখন ML-এর জন্য খুব দরকারি।
Safetensors-এর ভেতরের খবর
Safetensors শুধু একটি ডেটা ফরম্যাট নয়, এটি নিরাপত্তা, দক্ষতা এবং উপযোগিতা বাড়ানোর জন্য কিছু ডিজাইন পছন্দকে মিলিয়ে তৈরি করা হয়েছে:
- জিরো-কপি: Safetensors-এর ডিজাইন CPU-তে জিরো-কপির সুবিধা দেয়, যদি ফাইলটি ক্যাশে থাকে। GPU-তে ডিস্ক ক্যাশে না থাকার কারণে কপি করা দরকার হলেও, ডিজাইনের কারণে CPU-তে সব টেনসর একসাথে রাখার দরকার হয় না।
- Endianness: Safetensors লিটল-এন্ডিয়ান অর্ডারিং ব্যবহার করে, যা ডেটা স্টোরেজের জন্য একটি জনপ্রিয় পছন্দ।
- অর্ডার: এটি ‘C’ বা রো-মেজর অর্ডারিং ব্যবহার করে। এই পছন্দটি ডেটা স্টোরেজের প্রচলিত স্ট্যান্ডার্ডের সঙ্গে সঙ্গতিপূর্ণ।
- স্ট্রাইড: স্ট্রিডিং সাপোর্ট করে না। সিরিয়ালাইজ করার আগে সব টেনসরকে প্যাক করতে হয়। এই ডিজাইন সিদ্ধান্তটি সিরিয়ালাইজড ফরম্যাটে বর্তমান ব্যবহারের ওপর ভিত্তি করে নেওয়া হয়েছে।
অতিরিক্ত সুবিধা
একটি দক্ষ এবং নিরাপদ ডেটা স্টোরেজ ফরম্যাট হওয়ার পাশাপাশি Safetensors কিছু অতিরিক্ত সুবিধাও নিয়ে আসে:
- DOS অ্যাটাক প্রতিরোধ: Safetensors-এর ডিজাইন ক্ষতিকর ফাইল দিয়ে DOS অ্যাটাক করার সম্ভাবনা কমায়। JSON পার্সিংয়ের জন্য হেডারের একটি সাইজ লিমিট আছে এবং ফাইলে অ্যাড্রেসগুলো ওভারল্যাপ করে না। এর মানে, একটি ফাইল লোড করতে ফাইলের সাইজের চেয়ে বেশি মেমোরি লাগবে না।
- দ্রুত লোড: Safetensors পাইটর্চের অতিরিক্ত CPU কপি এড়িয়ে যায়, ফলে pickle-এর চেয়ে CPU লোডিংয়ের সময় অনেক কম লাগে। GPU লোডিংয়ের সময়ও পাইটর্চের চেয়ে দ্রুত বা সমান হয়।
- লেইজি লোডিং: ডিস্ট্রিবিউটেড সেটিংসে (মাল্টি-নোড বা মাল্টি-GPU), Safetensors টেনসরের কিছু অংশ লোড করার সুবিধা দেয়, যা মডেল লোডিংয়ের সময় কমায় এবং ডেভেলপমেন্টের কাজ দ্রুত করে।
কোথায় কোথায় ব্যবহৃত হচ্ছে
Safetensors বর্তমানে Hugging Face, EleutherAI, এবং StabilityAI-এর মতো প্রথম সারির AI কোম্পানিগুলোতে ব্যাপকভাবে ব্যবহৃত হচ্ছে। Safetensors ব্যবহার করে এমন কয়েকটি গুরুত্বপূর্ণ প্রোজেক্ট হলো:
- huggingface/transformers
- AUTOMATIC1111/stable-diffusion-webui
- Llama-cpp
- microsoft/TaskMatrix
- hpcaitech/ColossalAI
- huggingface/pytorch-image-models
- CivitAI
- huggingface/diffusers
- coreylowman/dfdx
- invoke-ai/InvokeAI
- oobabooga/text-generation-webui
- Sanster/lama-cleaner
- PaddlePaddle/PaddleNLP
- AIGC-Audio/AudioGPT
- brycedrennan/imaginAIry
- comfyanonymous/ComfyUI
- LianjiaTech/BELLE
উপসংহারে বলা যায়, Safetensors তার বিশেষ বৈশিষ্ট্য এবং সুবিধাগুলোর সাথে মেশিন লার্নিং এবং ডেটা স্টোরেজের জগতে একটি গেম-চেঞ্জার হতে প্রস্তুত। তাই, আর দেরি না করে এটি ব্যবহার করে দেখুন—মডেল ফরম্যাটের ভবিষ্যৎ আপনার জন্য অপেক্ষা করছে!