File size: 9,764 Bytes
1440c49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# 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`:

```bash
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, установите его перед остальными зависимостями:

```bash
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. Сохраните предупреждение о коротком пробном обучении в карточке.

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

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

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

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

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

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

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

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

```bash
# Загружает данные и заново обучает токенизатор в 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 не включены ради размера: точное продолжение с того же шага невозможно. Для полезной модели нужны значительно больше подходящих данных и вычислений; простое повторение этих же текстов не заменит полноценное предобучение. При длительном обучении добавьте регулярное сохранение чекпойнтов — текущий минимальный скрипт экспортирует веса только после завершения всех шагов.