Tensorless — мой опыт создания AI-фреймворка с нуля. Узнайте, как я прошёл путь от изучения PyTorch до собственной библиотеки. Читайте и вдохновляйтесь!
Tensorless — это проект, который вырос из простого желания упростить обучение нейросетей. Если вы когда-нибудь хотели понять, как работают фреймворки машинного обучения, но устали от тонны настроек, эта статья для вас. Я расскажу, как создал собственную библиотеку, какие ошибки совершил и что из этого вышло.
Прежде чем появился Tensorless, я изучал PyTorch, создавая две реальные модели. Это дало мне базовое понимание процесса: подготовка данных, создание модели, обучение, функции потерь, оптимизаторы, батчинг, сохранение и загрузка моделей, инференс. После двух проектов я заметил, как много рутины в каждой настройке. Мне захотелось автоматизировать этот процесс.
Изначально Tensorless использовал PyTorch внутри себя. Я не пытался изобретать нейросети, а лишь автоматизировал обучение. Конфигурация определялась автоматически с помощью фиксированных условий. Это работало, но возникла проблема: зависимости раздувались до 500+ МБ. Я хотел лёгкости, поэтому решил пойти дальше и написать собственную реализацию.
Я начал создавать собственные компоненты: нейросети, обучение, оптимизацию CUDA, пайплайны данных, поддержку TPU, токенизацию, BPE и многое другое. Tensorless превратился из простой обёртки в полноценную систему. Чтобы проверить её, я обучил чат-бота по имени CatTongue — кота, который отвечает на вопросы. Первые результаты были обнадёживающими: кот шутил про кухню и врагов-пылесосов. Но после смены системы обучения результаты стали ужасными: кот начал говорить на древнем языке! Это показало, что запустить код — не то же самое, что заставить модель хорошо работать.
Несмотря на проблемы, интерфейс стал простым. Пример предобучения и дообучения:
import tensorless as tl
# Предобучение базовой модели
base_model = tl.pretrain(out="pretrained_base.tl", max_seq_len=30)
# Дообучение на диалогах кота
model = tl.train("data/conversations.json", pretrained="pretrained_base.tl", out="cat.tl")Новичок может просто передать данные и получить модель, а продвинутый пользователь — настроить всё под себя. Философия: просто по умолчанию, настраиваемо при необходимости.
Tensorless весит всего 30–40 МБ, в отличие от гигантских фреймворков. Проект открыт на GitHub и PyPI. CatTongue тоже открыт. Но сейчас я застрял на сложных вещах: CUDA, TPU, мульти-GPU и стабильность обучения. GPU определяется, но не всегда ускоряет обучение. TPU и мульти-GPU — та же история. Результаты обучения не всегда сопоставимы с成熟ными фреймворками.
Если вы разбираетесь в CUDA, оптимизации GPU, TPU, нейросетях или пайплайнах данных — я буду рад обратной связи. Даже просто указать на проблему — уже помощь. Проект открыт, и я надеюсь на совместное развитие.
Если вы хотите создать свой AI-фреймворк, начните с малого: изучите основы PyTorch, создайте пару моделей, автоматизируйте рутину. Не бойтесь ошибок — они учат. А если вам нужен лёгкий инструмент для экспериментов, попробуйте Tensorless или внесите свой вклад в его развитие. Удачи в ваших проектах!
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →