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 در مقایسه با برخی از فرمتهای رایجتر چگونه عمل میکند:
- جلوگیری از حملات DOS: طراحی Safetensors احتمال ایجاد حملات DOS توسط فایلهای مخرب را کاهش میدهد. محدودیتی در اندازه هدر برای جلوگیری از تجزیه JSON بسیار بزرگ وجود دارد، و تضمین میشود که آدرسها در فایل همپوشانی ندارند، به این معنی که بارگیری یک فایل هرگز نباید از اندازه فایل در حافظه بیشتر شود.
- بارگذاری سریعتر: Safetensors از کپی اضافی CPU در PyTorch عبور میکند و زمان بارگذاری CPU را در مقایسه با pickle بسیار سریعتر میکند. زمان بارگذاری GPU به همان سرعت یا سریعتر از معادل PyTorch است.
- بارگذاری تنبل: در تنظیمات توزیعشده (چند گره یا چند GPU)، 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 امکان کپی صفر واقعی را در CPU فراهم میکند اگر فایل از قبل در حافظه پنهان باشد. در GPU، اگرچه به دلیل عدم وجود حافظه پنهان دیسک، کپی همیشه ضروری است، اما طراحی نیاز به تخصیص همه تنسورها در CPU را در هر نقطه معین دور میزند.
- Endianness: Safetensors از ترتیب little-endian استفاده میکند، انتخابی محبوب در ذخیرهسازی داده.
- ترتیب: از ترتیب ‘C’ یا ردیف-اصلی استفاده میکند. این انتخاب با استاندارد رایج در ذخیرهسازی داده همسو است.
- Stride: Striding پشتیبانی نمیشود. همه تنسورها باید قبل از سریالسازی بستهبندی شوند. این تصمیم طراحی بر اساس الگوهای استفاده فعلی در فرمتهای سریالسازی شده گرفته شده است.
- جلوگیری از حملات DOS: طراحی Safetensors احتمال ایجاد حملات DOS توسط فایلهای مخرب را کاهش میدهد. محدودیتی در اندازه هدر برای جلوگیری از تجزیه JSON بسیار بزرگ وجود دارد، و تضمین میشود که آدرسها در فایل همپوشانی ندارند، به این معنی که بارگیری یک فایل هرگز نباید از اندازه فایل در حافظه بیشتر شود.
- بارگذاری سریعتر: Safetensors از کپی اضافی CPU در PyTorch عبور میکند و زمان بارگذاری CPU را در مقایسه با pickle بسیار سریعتر میکند. زمان بارگذاری GPU به همان سرعت یا سریعتر از معادل PyTorch است.
- بارگذاری تنبل: در تنظیمات توزیعشده (چند گره یا چند GPU)، 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
- Pickle (PyTorch): یک فرمت پرکاربرد، اما pickle یک نقطه ضعف مهم دارد – ناامن است زیرا اجازه میدهد کد دلخواه اجرا شود.
- H5 (Tensorflow): اگرچه امن است، اما از کپی صفر پشتیبانی نمیکند، ویژگیای که برای دستکاری کارآمد دادهها ضروری است.
- SavedModel (Tensorflow): این فرمت مخصوص Tensorflow است و فاقد انعطافپذیری برای سایر برنامهها است.
- Numpy (npz): در حالی که محبوب است، این فرمت از bfloat16 پشتیبانی نمیکند، ویژگیای که بهطور فزایندهای در دنیای ML حیاتی است.
- کپی صفر: طراحی Safetensors امکان کپی صفر واقعی را در CPU فراهم میکند اگر فایل از قبل در حافظه پنهان باشد. در GPU، اگرچه به دلیل عدم وجود حافظه پنهان دیسک، کپی همیشه ضروری است، اما طراحی نیاز به تخصیص همه تنسورها در CPU را در هر نقطه معین دور میزند.
- Endianness: Safetensors از ترتیب little-endian استفاده میکند، انتخابی محبوب در ذخیرهسازی داده.
- ترتیب: از ترتیب ‘C’ یا ردیف-اصلی استفاده میکند. این انتخاب با استاندارد رایج در ذخیرهسازی داده همسو است.
- Stride: Striding پشتیبانی نمیشود. همه تنسورها باید قبل از سریالسازی بستهبندی شوند. این تصمیم طراحی بر اساس الگوهای استفاده فعلی در فرمتهای سریالسازی شده گرفته شده است.
- جلوگیری از حملات DOS: طراحی Safetensors احتمال ایجاد حملات DOS توسط فایلهای مخرب را کاهش میدهد. محدودیتی در اندازه هدر برای جلوگیری از تجزیه JSON بسیار بزرگ وجود دارد، و تضمین میشود که آدرسها در فایل همپوشانی ندارند، به این معنی که بارگیری یک فایل هرگز نباید از اندازه فایل در حافظه بیشتر شود.
- بارگذاری سریعتر: Safetensors از کپی اضافی CPU در PyTorch عبور میکند و زمان بارگذاری CPU را در مقایسه با pickle بسیار سریعتر میکند. زمان بارگذاری GPU به همان سرعت یا سریعتر از معادل PyTorch است.
- بارگذاری تنبل: در تنظیمات توزیعشده (چند گره یا چند GPU)، 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 در حال حاضر به طور گسترده در شرکتهای پیشرو در زمینه هوش مصنوعی مانند Hugging Face, EleutherAI, و StabilityAI در حال استفاده است. چندین پروژه برجسته که از Safetensors استفاده میکنند عبارتند از:
در پایان، Safetensors، با مجموعه منحصربهفرد ویژگیها و مزایای خود، آماده است تا به یک تغییردهنده بازی در دنیای یادگیری ماشین و ذخیرهسازی داده تبدیل شود. پس، پیش بروید و آن را امتحان کنید – آینده فرمتهای مدل در انتظار شماست!
یک گام فراتر
Safetensors فراتر از اینکه صرفاً یک فرمت ذخیرهسازی داده کارآمد و ایمن باشد، مزایای دیگری را نیز ارائه میدهد:
در عمل
Safetensors در حال حاضر به طور گسترده در شرکتهای پیشرو در زمینه هوش مصنوعی مانند Hugging Face, EleutherAI, و StabilityAI در حال استفاده است. چندین پروژه برجسته که از Safetensors استفاده میکنند عبارتند از:
در پایان، Safetensors، با مجموعه منحصربهفرد ویژگیها و مزایای خود، آماده است تا به یک تغییردهنده بازی در دنیای یادگیری ماشین و ذخیرهسازی داده تبدیل شود. پس، پیش بروید و آن را امتحان کنید – آینده فرمتهای مدل در انتظار شماست!
درون Safetensors
با کمی عمیقتر شدن در Safetensors، متوجه میشویم که این فقط یک فرمت داده نیست، بلکه ترکیبی از انتخابهای طراحی متفکرانه است که ایمنی، کارایی و سودمندی را افزایش میدهد:
یک گام فراتر
Safetensors فراتر از اینکه صرفاً یک فرمت ذخیرهسازی داده کارآمد و ایمن باشد، مزایای دیگری را نیز ارائه میدهد:
در عمل
Safetensors در حال حاضر به طور گسترده در شرکتهای پیشرو در زمینه هوش مصنوعی مانند Hugging Face, EleutherAI, و StabilityAI در حال استفاده است. چندین پروژه برجسته که از Safetensors استفاده میکنند عبارتند از:
در پایان، Safetensors، با مجموعه منحصربهفرد ویژگیها و مزایای خود، آماده است تا به یک تغییردهنده بازی در دنیای یادگیری ماشین و ذخیرهسازی داده تبدیل شود. پس، پیش بروید و آن را امتحان کنید – آینده فرمتهای مدل در انتظار شماست!