Terra 2.6 · SpaceModel

Реально обученный экспериментальный LoRA-адаптер для русско-английского чат-бота.

В отличие от первого архива проекта, здесь уже есть обученные веса: adapter_model.safetensors. Они получены после настоящего обучения на CPU, а не случайной инициализации или одного переименования.

Это адаптер, не полные веса: при запуске дополнительно скачивается Qwen2.5-0.5B-Instruct (примерно 1 ГБ). Маленький размер адаптера объясняется тем, что он хранит только обученные LoRA-матрицы. Исходная модель разработана командой Qwen; SpaceModel — издатель/бренд производного продукта Terra.

Что выполнено

Параметр Фактическое значение
Параметров в исходной архитектуре 494 032 768
Класс размера 0.5B, не ровно 500М
Обучаемых параметров LoRA 73 728
Обучение CPU, BF16 для основы; FP32 для адаптера
Модули q_proj, v_proj, o_proj в последних двух блоках
LoRA rank / alpha 8 / 16
Learning rate 0,0005
Оптимизатор AdamW, weight decay 0
Batch size / gradient accumulation 1 / 1
Обучающих диалогов 32: 16 RU + 16 EN
Шагов оптимизатора / эпох 32 / 1
Проверочных диалогов 8: 4 RU + 4 EN
Время обучения + проверки до/после + загрузки около 119 секунд
Пиковая память процесса около 1524 МиБ

Базовые веса заморожены; обновлялись только LoRA-матрицы. Loss вычислялся только по токенам ответа assistant, с сохранением контекста. Обучение не использовало проверочные ответы для градиентов. Все демонстрационные диалоги включены в data/.

Закреплённая версия основы: 7ae557604adf67be50417f59c2c2f167def9a775.

Измеренные результаты — ограниченный эксперимент

Средняя cross-entropy по токенам ответов на восьми отдельных демонстрационных диалогах:

Язык До обучения После обучения
Русский 1,260570 1,225037
Английский 0,459850 0,428699
Вместе, с весом по числу токенов 0,961171 0,927276

Это очень маленький набор, не полноценный бенчмарк. Снижение loss не доказывает общее улучшение модели, знания языков или безопасность. Не заявляется готовность к промышленному применению. Поддержка обоих языков преимущественно унаследована от исходной модели.

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

  • terra_training.json — параметры запуска, метрики, хеши;
  • training_events.jsonl, training_console.log — журнал обучения;
  • verification.json — результаты повторной загрузки;
  • generation_samples.json — реальные ответы после загрузки.

Пример фактического ответа:

What is 14 plus 8? Answer briefly.

14 + 8 = 22

В другом пробном ответе модель перевела фразу «Сегодня хорошая погода» как “Today is a good weather.” Это грамматическая ошибка: корректнее “The weather is nice today.” Ошибка сохранена в журнале, а не исправлена задним числом. Модель также не всегда полностью произносит имя с номером версии.

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

Из корня извлечённой папки:

python -m pip install -r requirements.txt
python scripts/run.py --prompt "Привет! Как тебя зовут?"
python scripts/run.py --prompt "Explain what a rainbow is in simple English."
# Простой терминальный чат без сохранения контекста между репликами:
python scripts/run.py

Первый запуск требует интернет для скачивания основы. Для CPU при ограниченной памяти нужен поддерживающий BF16 PyTorch; на GPU скрипт выбирает поддерживаемый dtype. В этом эксперименте использованы Python 3.13, PyTorch 2.6.0+cpu, Transformers 4.51.3, PEFT 0.15.2, Accelerate 1.6.0. Для обычного компьютера рекомендуется запас RAM от 4–8 ГБ; измеренные 1,5 ГБ не гарантируются в другом окружении.

Загрузка опубликованного адаптера в Python

Замените YOUR_ACCOUNT/Terra-2.6 реальным ID своего репозитория.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

adapter = "YOUR_ACCOUNT/Terra-2.6"
base = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen2.5-0.5B-Instruct",
    revision="7ae557604adf67be50417f59c2c2f167def9a775",
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=False,
)
model = PeftModel.from_pretrained(base, adapter).eval()
tok = AutoTokenizer.from_pretrained(adapter, trust_remote_code=False)
inputs = tok.apply_chat_template(
    [{"role": "user", "content": "Привет!"}],
    tokenize=True, add_generation_prompt=True, return_dict=True, return_tensors="pt",
)
with torch.inference_mode():
    result = model.generate(**inputs, max_new_tokens=80, do_sample=False)
print(tok.decode(result[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Опубликовать на Hugging Face

Можно создать репозиторий Model и загрузить в него содержимое этой папки, не ZIP и не внешнюю папку целиком. В корне репозитория должны быть как минимум adapter_model.safetensors, adapter_config.json, токенизатор, README.md и лицензии. Лучше загрузить также приложенные метаданные и журнал для воспроизводимости.

Либо используйте скрипт:

huggingface-cli login
# Приватный репозиторий:
python scripts/upload.py --repo YOUR_ACCOUNT/Terra-2.6
# Публичный репозиторий:
python scripts/upload.py --repo YOUR_ACCOUNT/Terra-2.6 --public

Токен вводите только при локальной авторизации. Для SpaceModel/Terra-2.6 нужны права на соответствующую организацию; имя бренда их не предоставляет. Скрипт задаёт указанную видимость и для существующего репозитория. Используйте новый/выделенный репозиторий: старые посторонние файлы не удаляются автоматически.

Публикация в ваш аккаунт ещё не выполнялась. Сервис Hugging Face не гарантирует автоматическое предоставление бесплатного чата или сервера для этого адаптера.

Нужны полные веса одним комплектом, без отдельного адаптера?

Соберите их слиянием:

python scripts/merge.py --output ../Terra-2.6-full
python scripts/upload.py --repo YOUR_ACCOUNT/Terra-2.6 --folder ../Terra-2.6-full --public

Получатся самостоятельные полные BF16-веса примерно на 1 ГБ с точным числом параметров 494 032 768. Они загружаются через обычный AutoModelForCausalLM. Слияние может внести небольшое округление BF16; результаты после слияния нужно перепроверить. Скрипт слияния включён, но создание полного архива весов и его отдельная оценка в этой сессии не выполнялись.

Воспроизводимость и ограничения

python scripts/check_trained.py проверяет сохранённые веса и повторяет четыре пробные генерации. scripts/train_cpu.py содержит использованный расчёт градиентов. Он не перезаписывает адаптер без явного разрешения. Для повторного эксперимента сначала сделайте отдельную копию папки и задайте переменную окружения TERRA_OVERWRITE_ADAPTER=1 — в этой копии будут перезаписаны веса и метаданные. Логи при повторном запуске дописываются; для чистого журнала удалите их в копии.

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

Лицензия

Apache-2.0. См. LICENSE, BASE_MODEL_LICENSE.txt, PROVENANCE.md. Обязательные сведения об исходной модели сохранены. Исходные веса и токенизатор созданы командой Qwen; изменения проекта и результаты дообучения описаны открыто.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for openmodelai/Terra-2.6

Adapter
(869)
this model