OneTrainer в основном построен на базе библиотеки Hugging Face diffusers library.

Модули

Структура разделена на модули, каждый из которых несет отдельную ответственность. Различные модули одного типа обычно могут быть взаимозаменяемы. У каждого типа модуля есть своя собственная подпапка в папке modules.

Это поддерживаемые в настоящее время типы модулей:

  • dataLoader: Загрузчик данных отвечает за загрузку образцов во время обучения. OneTrainer использует MGDS в качестве библиотеки для реализации этих загрузчиков данных, которая представляет собой пользовательскую реализацию загрузчика данных на основе графов.
  • model: Модель содержит веса, оптимизаторы и связанные с ними данные, которые необходимы во время обучения.
  • modelLoader: Загрузчик моделей загружает модель для обучения во внутреннее представление. Загрузчики моделей поддерживают различные форматы моделей, такие как контрольные точки и датчики безопасности.
  • modelSampler: Выборочный модуль модели может выполнять выборку модели либо во время обучения для предварительного просмотра, либо вызываться отдельно для тестирования вашей обученной модели.
  • modelSaver: Средство сохранения модели работает в обратном направлении, чем средство загрузки модели. Оно сохраняет модель из внутреннего представления в удобный формат файла.
  • modelSetup: Настройка модели предоставляет различные функции для настройки процесса обучения без проведения самого обучения. Эти функции включают в себя создание оптимизатора, перенос модели на соответствующее устройство, выполнение прогнозов на модели.
  • trainer: Тренер сводит все воедино. Он запускает загрузчик модели и настройку модели, а затем выполняет цикл обучения. Во время обучения можно выполнять множество различных действий, таких как регулярная выборка образцов или резервное копирование.
  • ui: Модуль пользовательского интерфейса содержит весь код пользовательского интерфейса.
  • util: Набор служебных функций, необходимых в различных частях кодовой базы.

Скрипты

Конечно, эти модули не предоставляют никакой функциональности, ориентированной на пользователя. Думайте о них как о наборе инструментов, которые могут использоваться скриптами для обеспечения реальной функциональности пользователя. Каждый скрипт имеет ровно одну цель и может быть запущен непосредственно из командной строки. Внутри скриптов не реализовано никакой дополнительной функциональности. В плане функциональности они должны полагаться только на модули.