Зображення автора
Компанія Hugging Face розробила новий формат серіалізації під назвою Safetensors, спрямований на спрощення та оптимізацію зберігання та завантаження великих і складних тензорів. Тензори є основною структурою даних, яка використовується в глибокому навчанні, і їхній розмір може створювати проблеми, коли йдеться про ефективність.
Safetensors використовують комбінацію ефективних алгоритмів серіалізації та стиснення, щоб зменшити розмір великих тензорів, що робить його швидшим і ефективнішим, ніж інші формати серіалізації, як-от pickle. Це означає, що Safetensors у 76.6 разів швидше на центральному процесорі та в 2 рази швидше на графічному процесорі порівняно з традиційним форматом серіалізації PyTorch, pytorch_model.bin з model.safetensors . Перевірити Порівняння швидкості.
Легкий у використанні
Safetensors мають простий та інтуїтивно зрозумілий API для серіалізації та десеріалізації тензорів у Python. Це означає, що розробники можуть зосередитися на створенні своїх моделей глибокого навчання замість того, щоб витрачати час на серіалізацію та десеріалізацію.
Міжплатформна сумісність
Ви можете серіалізувати в Python і зручно завантажувати отримані файли на різних мовах програмування та платформах, таких як C++, Java та JavaScript. Це дозволяє безперебійно обмінюватися моделями в різних середовищах програмування.
швидкість
Safetensors оптимізовано для швидкості та може ефективно виконувати серіалізацію та десеріалізацію великих тензорів. Як результат, це чудовий вибір для програм, які використовують великі мовні моделі.
Оптимізація розміру
Він використовує поєднання ефективних алгоритмів серіалізації та стиснення для зменшення розміру великих тензорів, що забезпечує швидшу та ефективнішу продуктивність порівняно з іншими форматами серіалізації, такими як pickle.
Безпечний
Щоб запобігти будь-якому пошкодженню під час зберігання або передачі серіалізованих тензорів, Safetensors використовує механізм контрольної суми. Це гарантує додатковий рівень безпеки, гарантуючи, що всі дані, що зберігаються в Safetensors, є точними та надійними. Більше того, це запобігає DOS-атаки.
Ляжке навантаження
Працюючи в розподілених налаштуваннях із декількома вузлами або графічним процесором, корисно завантажувати лише частину тензорів у кожну модель. BLOOM використовує цей формат для завантаження моделі на 8 графічних процесорах лише за 45 секунд у порівнянні зі звичайними зважуваннями PyTorch, які займали 10 хвилин.
У цьому розділі ми розглянемо safetensors API і те, як ви можете зберігати та завантажувати файли тензорів.
Ми можемо просто встановити safetensors за допомогою pip manager:
pip install safetensors
Скористаємося прикладом з Факел ділить тензори щоб створити просту нейронну мережу та зберегти модель за допомогою API safetensors.torch для PyTorch.
from torch import nn class Model(nn.Module): def __init__(self): super().__init__() self.a = nn.Linear(100, 100) self.b = self.a def forward(self, x): return self.b(self.a(x)) model = Model()
print(model.state_dict())
Як бачимо, ми успішно створили модель.
OrderedDict([('a.weight', tensor([[-0.0913, 0.0470, -0.0209, ..., -0.0540, -0.0575, -0.0679], [ 0.0268, 0.0765, 0.0952, ..., -0.0616, 0.0146, -0.0343], [ 0.0216, 0.0444, -0.0347, ..., -0.0546, 0.0036, -0.0454], ...,
Тепер ми збережемо модель, надавши об’єкт model та ім’я файлу. Після цього ми завантажимо файл збереження в об’єкт model , створений за допомогою nn.Module .
from safetensors.torch import load_model, save_model save_model(model, "model.safetensors") load_model(model, "model.safetensors")
print(model.state_dict())
OrderedDict([('a.weight', tensor([[-0.0913, 0.0470, -0.0209, ..., -0.0540, -0.0575, -0.0679], [ 0.0268, 0.0765, 0.0952, ..., -0.0616, 0.0146, -0.0343], [ 0.0216, 0.0444, -0.0347, ..., -0.0546, 0.0036, -0.0454], ...,
У другому прикладі ми спробуємо зберегти тензор, створений за допомогою torch.zeros . Для цього ми будемо використовувати функцію save_file .
import torch
from safetensors.torch import save_file, load_file tensors = { "weight1": torch.zeros((1024, 1024)), "weight2": torch.zeros((1024, 1024))
}
save_file(tensors, "new_model.safetensors")
А щоб завантажити тензори, ми використаємо функцію load_file .
load_file("new_model.safetensors")
{'weight1': tensor([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]), 'weight2': tensor([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]])}
API safetensors доступний для Pytorch, Tensorflow, PaddlePaddle, Flax і Numpy. Ви можете зрозуміти це, прочитавши Safetensors документація.
Зображення з Torch API
Коротше кажучи, safetensors — це новий спосіб зберігання великих тензорів, який використовується в програмах глибокого навчання. Порівняно з іншими методами, він пропонує швидші, ефективніші та зручніші функції. Крім того, він забезпечує конфіденційність і безпеку даних, підтримуючи різні мови програмування та платформи. Використовуючи Safetensors, інженери машинного навчання можуть оптимізувати свій час і зосередитися на розробці чудових моделей.
Я настійно рекомендую використовувати Safetensors для ваших проектів. Багато провідних AI-компаній, таких як Hugging Face, EleutherAI і StabilityAI, використовують Safetensors для своїх проектів.
Посилання
Абід Алі Аван (@1abidaliawan) є сертифікованим фахівцем із дослідження даних, який любить створювати моделі машинного навчання. Зараз він зосереджується на створенні контенту та написанні технічних блогів про технології машинного навчання та науки про дані. Абід має ступінь магістра з управління технологіями та ступінь бакалавра в галузі телекомунікаційної інженерії. Його бачення полягає в тому, щоб створити продукт AI з використанням нейронної мережі графа для студентів, які борються з психічними захворюваннями.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. Автомобільні / електромобілі, вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- BlockOffsets. Модернізація екологічної компенсаційної власності. Доступ тут.
- джерело: https://www.kdnuggets.com/2023/07/introduction-safetensors.html?utm_source=rss&utm_medium=rss&utm_campaign=introduction-to-safetensors
- : має
- :є
- 10
- 100
- 11
- 13
- 32
- 7
- 8
- a
- точний
- через
- доданий
- Додатково
- після
- AI
- спрямований
- алгоритми
- ВСІ
- дозволяє
- an
- та
- будь-який
- API
- застосування
- ЕСТЬ
- AS
- At
- доступний
- Blend
- блоги
- Цвісти
- будувати
- Створюємо
- by
- C + +
- званий
- CAN
- Сертифікований
- проблеми
- перевірка
- вибір
- клас
- поєднання
- приходить
- Компанії
- порівняний
- комплекс
- сконцентрувати
- конфіденційність
- зміст
- контент-створення
- Корупція
- центральний процесор
- створений
- створення
- В даний час
- дані
- наука про дані
- вчений даних
- зменшити
- глибокий
- глибоке навчання
- Ступінь
- надійний
- розвиненою
- розробників
- розвивається
- різний
- розподілений
- документація
- під час
- кожен
- Ефективний
- ефективність
- ефективний
- продуктивно
- Машинобудування
- Інженери
- гарантує
- забезпечення
- середовищах
- приклад
- відмінно
- Face
- швидше
- риси
- філе
- Файли
- Сфокусувати
- фокусування
- для
- формат
- від
- функція
- GPU
- Графічні процесори
- графік
- Графік нейронної мережі
- гарантії
- обробляти
- Мати
- he
- корисний
- дуже
- його
- тримає
- Як
- HTTPS
- хвороба
- імпорт
- in
- встановлювати
- замість
- в
- Вступ
- інтуїтивний
- IT
- Java
- JavaScript
- просто
- KDnuggets
- мова
- мови
- великий
- шар
- вивчення
- навчання інженерів
- як
- загрузка
- погрузка
- подивитися
- любить
- машина
- навчання за допомогою машини
- Робить
- управління
- менеджер
- багато
- майстер
- засоби
- механізм
- психічний
- Психічні розлади
- протокол
- модель
- Моделі
- Модулі
- більше
- більш ефективний
- множинний
- ім'я
- мережу
- Нейронний
- нейронної мережі
- Нові
- вузли
- нумпі
- об'єкт
- of
- Пропозиції
- on
- тільки
- Оптимізувати
- оптимізований
- or
- Інше
- з
- продуктивність
- Платформи
- plato
- Інформація про дані Платона
- PlatoData
- запобігати
- запобігає
- первинний
- Product
- професійний
- Програмування
- мови програмування
- проектів
- забезпечення
- Python
- піторх
- читання
- рекомендувати
- зменшити
- регулярний
- результат
- в результаті
- повертати
- s
- Безпека
- зберегти
- наука
- вчений
- безшовні
- другий
- seconds
- розділ
- безпеку
- побачити
- SELF
- налаштування
- загальні
- поділ
- Короткий
- простий
- спрощення
- просто
- Розмір
- швидкість
- Витрати
- зберігання
- зберігати
- зберігати
- упорядкування
- структура
- Бореться
- Студентам
- Успішно
- такі
- чудовий
- Підтримуючий
- технічний
- методи
- Технології
- Технологія
- телекомунікації
- тензорний потік
- ніж
- Що
- Команда
- їх
- це
- час
- до
- прийняли
- топ
- факел
- традиційний
- переклад
- намагатися
- розуміти
- використання
- використовуваний
- зручно
- використовує
- використання
- використовувати
- використовує
- використовує
- різний
- бачення
- шлях..
- we
- вага
- коли
- який
- в той час як
- ВООЗ
- волі
- з
- робочий
- лист
- X
- ви
- вашу
- зефірнет