Galactic-2.5-Mini / START_HERE.md
openmodelai's picture
Upload 10 files
1440c49 verified
|
Raw History Blame Contribute Delete
9.76 kB

Galactic 2.5 Mini — SpaceModel

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

Что это

  • Название: Galactic 2.5 Mini.
  • Разработчик / бренд по вашему указанию: SpaceModel.
  • 49 999 872 уникальных обучаемых параметра (~50 млн).
  • GPT-2-совместимый decoder-only Transformer: 12 слоёв, размерность 512, 8 голов, FFN 2048.
  • Собственный byte-level BPE, 23 258 токенов; русский и английский входят в обучающие данные.
  • Случайная инициализация: чужие предобученные веса не использовались.
  • 300 шагов AdamW на CPU, batch 2 × 128 токенов: 76 800 предъявлений входных токенов, 76 200 целевых предсказаний. Фрагменты выбирались с возвращением, это не число уникальных токенов.
  • Конфигурация контекста — 512 токенов; в этом запуске обучались последовательности только по 128. Длинный контекст не обучен и не проверен.
  • Веса FP16, около 100 МБ (95,4 MiB); для работы на CPU пример загружает FP32.

Важное ограничение

Такой объём обучения крайне мал. Не ожидайте связных ответов, следования инструкциям, достоверных знаний, устойчивой грамматики или полноценного владения обоими языками. Название «2.5» — заданное вами имя, а не указание на существовавшие предыдущие версии или уровень качества. Модель не проходила instruction tuning, safety tuning или внешние бенчмарки.

Файлы

  • model/ — готовое содержимое репозитория модели на Hugging Face.
  • model/model.safetensors — веса.
  • model/config.json, generation_config.json — конфигурация.
  • model/tokenizer.json, tokenizer_config.json, special_tokens_map.json, vocab.json, merges.txt — токенизатор.
  • model/README.md — карточка модели с фактическими результатами.
  • model/training_report.json, training_log.jsonl — отчёт и журнал реального запуска.
  • model/verification.json — проверка загрузки и некорректированные примеры генерации.
  • data_sources.json — источники, размеры и SHA-256 исходных текстов.
  • prepare_data.py, train.py, infer.py, upload.py, requirements.txt — код; копия включена в model/training/ для публикации.
  • SHA256SUMS.txt — контрольные суммы остальных файлов архива.

Запуск локально

Рекомендуется Python 3.11–3.13. После распаковки откройте терминал в папке Galactic-2.5-Mini:

python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows PowerShell вместо предыдущей команды:
# .venv\Scripts\Activate.ps1

pip install -r requirements.txt
python infer.py --prompt "Однажды вечером" --max-new-tokens 64
python infer.py --prompt "Once upon a time" --max-new-tokens 64

Если нужен CPU-only PyTorch, установите его перед остальными зависимостями:

pip install torch==2.5.1 --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt

Не используйте apply_chat_template: эта модель предназначена для продолжения текста, шаблона чата нет.

Загрузка на Hugging Face

Публикация автоматически не выполнялась. Доступ к аккаунту не запрашивался. Не отправляйте токены доступа в чат.

Через сайт

  1. Создайте репозиторий модели Galactic-2.5-Mini в вашем аккаунте или организации.
  2. Если хотите адрес SpaceModel/Galactic-2.5-Mini, вам нужны права на организацию SpaceModel. Её существование и доступность имени не проверялись.
  3. Загрузите содержимое папки model/ в корень репозитория. Саму внешнюю папку model загружать как вложенную не нужно. ZIP не заменяет распакованные файлы модели.
  4. Сохраните предупреждение о коротком пробном обучении в карточке.

Через командную строку

hf auth login
python upload.py --repo YOUR_NAMESPACE/Galactic-2.5-Mini

Скрипт создаёт приватный репозиторий по умолчанию. Проверьте файлы, карточку и лицензию, затем измените видимость в Settings. Для создания сразу публичного репозитория:

python upload.py --repo YOUR_NAMESPACE/Galactic-2.5-Mini --public

У уже существующего репозитория скрипт не меняет видимость. В YOUR_NAMESPACE подставьте настоящий логин или организацию с правами записи.

Воспроизведение и продолжение обучения

В исходные данные входят пять старых произведений Project Gutenberg. Исходные тексты не вложены в архив; загрузчик получает их по открытым URL. Источники помечены Gutenberg как public domain в США; перед повторным использованием проверяйте применимые правила вашей юрисдикции. Это маленький разнородный корпус: поэзия, задачи, исторический текст и английская проза; часть русских текстов имеет старую орфографию.

prepare_data.py удаляет внешнюю Gutenberg-шапку и лицензионный хвост; дополнительная очистка редакторских вставок/оглавлений не выполнялась. Последние 5% каждого произведения отложены для валидации и не участвуют в обучении токенизатора. Валидация оценивается на небольшом фиксированном наборе окон, а не на внешнем тесте.

# Загружает данные и заново обучает токенизатор в model/.
# Сначала сделайте копию model/: не перезаписывайте опубликованный токенизатор!
python prepare_data.py

# Полный повтор короткого запуска, со случайной инициализацией:
python train.py --steps 300 --batch-size 2 --seq-len 128 --device cpu --output reproduced

# Продолжить с экспортированных весов; оптимизатор будет НОВЫЙ:
python train.py --resume model --output continued --steps 1000 --batch-size 2 --seq-len 128

Изменение источников или версии токенизатора может изменить ID токенов. При продолжении обучения сохраняйте исходный токенизатор; если подготовили другой корпус, кодируйте его именно исходным токенизатором в .cache/train_ru.npy, .cache/train_en.npy, .cache/valid_ru.npy, .cache/valid_en.npy (одномерные массивы NumPy int32). Нельзя заново обучить токенизатор на новых данных и использовать его со старыми весами.

Состояния оптимизатора/RNG не включены ради размера: точное продолжение с того же шага невозможно. Для полезной модели нужны значительно больше подходящих данных и вычислений; простое повторение этих же текстов не заменит полноценное предобучение. При длительном обучении добавьте регулярное сохранение чекпойнтов — текущий минимальный скрипт экспортирует веса только после завершения всех шагов.