TGViewer
BigData Team (BDT) BigData Team (BDT) @bigdatateam · 808 subscribers
Post #656 162
💾 Модель обучена. Уверены, что загрузится через месяц?
рубрика pro #ml

Проект на курсе, трек трансформеров: DistilBERT дообучается отличать хорошие отзывы IMDB от плохих. Студенты собирают класс ModelTrainer, одиннадцать методов: загрузка данных, обучение, валидация, метрики, логирование. Есть там и save_model, десятая часть балла за проект. Всё условие умещается в докстринг: "Saves model to dst_path". Плюс одно предупреждение: проверьте, не обёрнута ли модель в DataParallel.

В 41% проектов метод закрыт одной строчкой: torch.save(model.state_dict()). По букве не придерёшься: модель сохранена в dst_path, файл на диске лежит, галочка стоит. Через месяц файл открывают. Модели там нет.

Файл есть. Чего нет:
1️⃣ Архитектуры
В state_dict только веса, голый словарь тензоров: ни конфига, ни описания слоёв. Загрузить его можно лишь в модель, заново собранную руками ровно той же архитектуры, иначе загрузка не сойдётся по слоям.
2️⃣ Токенизатора
Модель принимает индексы токенов, а не текст. Токенизатор рядом не сохранён, значит текст не во что превращать: инференс не собрать вовсе. Причём нужен тот же самый: у другого соответствие "слово → номер" своё.

Ирония: единственное, о чём условие предупредило прямым текстом, сделали почти все — обёртку развернули. Почти: в одной работе проверка на DataParallel написана, а строка внутри неё ничего не присваивает. Галочка снова стоит, эффекта снова ноль. Сломались не там, где условие предупреждало, а там, где оно промолчало.

🚭 Полезные привычки курильщика ML'щика

Сохраняйте модель перезагружаемой. model.save_pretrained(path), из-под обёртки — model.module.save_pretrained(path), и рядом в ту же папку tokenizer.save_pretrained(path). Тогда один from_pretrained(path) поднимает всё разом: конфиг, архитектуру, веса, токенизатор, на любой машине. Проверить легко: сохраните чекпойнт, перезапустите сессию и поднимите модель заново с диска — from_pretrained(path). Прогоните несколько примеров через инференс: предсказания должны совпасть с теми, что модель выдавала до сохранения. Совпали — сохранилась модель, а не файл.

Сохранить файл и сохранить модель — разные вещи. Первое закрывает букву условия, второе — смысл. А прод экзаменует без докстринга: предупреждений не пишет, подсказок не даёт, вопрос у него один. Загрузится?

Ставить такие привычки проще на практике с экспертами по DNN: здесь модель считается сохранённой, только когда поднялась на чужой машине.
🗓 Ближайший поток запланирован на 17 сентября

BigData Team: the way you learn best
AI Agents | Py4BDA | Python | Machine Learning | Big Data

#study #ml #MachineLearning #DataScience
  • ❤ 3
  • 🔥 3
More from @bigdatateam
  1. Sep 21, 2026✍️ Tech Orda: как не упустить грант — краткий план 1️⃣ Общая инструкция, независимо от выб…
  2. Sep 16, 2026🏁 Гранты Tech Orda: результаты волны III Подробности о программе AI Agents Engineer, гран…
  3. Sep 11, 2026🤐 Вы готовы услышать правду? Есть вопросы, которые лучше не задавать. В ML — особенно. Ил…
  4. Sep 10, 2026❤️‍🔥 Гранты Tech Orda: последний вагон 🚂 По решению Astana Hub конкурс на гранты продлён…
  5. Sep 4, 2026🚀 Гранты Tech Orda: результаты волны II Подробности о программе AI Agents Engineer, грант…
  6. Sep 4, 2026📖 Преступление и наказание Сентябрь, самое время перечитать классику. Раскольникова к при…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →