Vexion-LM 🧠

Vexion-LM — это семейство открытых языковых моделей, созданных с нуля. Проект включает в себя полный пайплайн: от написания кастомной архитектуры на PyTorch до претрейна базовых моделей и их последующего дообучения под диалоговый формат с использованием LoRA-адаптеров.

🚀 Особенности модели

  • Кастомная архитектура: Оптимизированный трансформер с поддержкой градиентного чекпоинтинга для экономии VRAM.
  • Эффективное обучение: Использование 8-битного оптимизатора (AdamW8bit) от библиотеки bitsandbytes, что позволяет тренировать модели локально на потребительских GPU.
  • Гибкая система LoRA: Встроенный механизм заморозки базовых весов и тренировки компактных адаптеров для диалогового формата без риска катастрофического забывания.
  • Умная генерация: Кастомный скрипт инференса с поддержкой штрафов за повторения, управления температурой и раннего останова по спецтокенам.
  • Эффективный RoPE: Написанный вручную RoPE - позволяет модели лучше понимать, где находится каждый токен.
  • MoE (Mixture of Experts): Встроенная система из 4 независимых экспертов с механизмом маршрутизации. Позволяет модели обладать «умом», активируя лишь часть из них при генерации для экономии ресурсов.
  • GQA (Grouped-Query Attention): Радикально снижает потребление видеопамяти при генерации длинного контекста (до 2048+ токенов), делая рост VRAM линейным, а не квадратичным.
  • SwiGLU & RMSNorm: Использование самых современных функций активации и нормализации (стандарт индустрии a-la Llama 3) для максимальной логики и скорости сходимости.
  • Кастомный BPE Токенизатор: Словарь строго на 40,960 токенов — идеальное число, кратное 64, что обеспечивает 100% эффективность работы тензорных ядер (Tensor Cores) видеокарты.
  • FlashAttention-2 & Memory Management: Встроенная поддержка sdpa_kernel и работа с динамическим аллокатором памяти (expandable_segments) для предотвращения OOM и фрагментации VRAM.

Create_Vexion-LM - позволяет вам самим с обучить с 0 или дообучить данную модель. Здесь выложены все файлы, от generate.py до train.py. Создавайте свои личные модели на Custom_architecture!)

⚠️ Важное предупреждение о совместимости

Эта модель построена на полностью кастомной архитектуре, написанной на чистом PyTorch. Она НЕ поддерживает библиотеку transformers от Hugging Face (Transformer API). Вы не сможете загрузить её через стандартные классы вроде AutoModelForCausalLM. Для инференса и дообучения используйте исключительно скрипты, приложенные в этом репозитории (model.py, generate.py, генерация.py).

⚙️ Формат весов и точность (Precision)

  • Формат файлов: .safetensors (безопасный и быстрый формат загрузки).
  • Базовая точность параметров: FP32.
  • При запуске генерации через generate.py код автоматически использует автоматическую смешанную точность (AMP via torch.amp.autocast), переходя на FP16 или BF16 на поддерживаемых видеокартах для экономии видеопамяти и ускорения работы. Вручную конвертировать веса не требуется.

🛠 Как использовать модель инференс - 2 варианта

  1. LoRA: Так как модель построена на кастомной архитектуре, в репозитории прилагается файл generate.py, через который осуществляется запуск. Запуск происходит через терминал/командную строку (CMD, PowerShell, терминал VSCode). Модель LoRA (дообученная на диалогах) - может запускаться только с generate.py

  2. PreTrained: В случае с предварительно обученной, generate.py - НЕ ПОДОЙДЕТ. Используйте генерация.py для общения с моделью. Учитывайте, что предварительно обученная модель не умеет общаться - а работает как "дополнитель текста".

1. Обучение модели

Этот гайд поможет вам подготовить данные и запустить обучение языковой модели на вашей домашней видеокарте.

Шаг 1: Подготовка рабочего пространства:

  1. Создайте главную папку для вашего проекта, например Models/. Поместите в нее все скрипты (train.py, Prepare_data.py и т.д.).
  2. Внутри создайте папку checkpoints/. Это критически важно: сюда модель будет сохранять свои веса (чекпоинты) во время обучения, чтобы вы не потеряли прогресс.
  3. Положите в главную папку два текстовых файла с вашим датасетом:
  • train.txt - основной огромный текст, на котором модель будет учиться.
  • val.txt - небольшой проверочный текст (валидация), который нужен для отслеживания качества и защиты от переобучения.

Шаг 2: Создание кастомного токенизатора

Модель не понимает буквы, она понимает токены (кусочки слов). Нам нужно обучить BPE-токенизатор на вашем тексте, чтобы он идеально понимал язык.

Откройте консоль (CMD), перейдите в папку проекта cd C:\Путь\К\Вашей\Models и введите команду:

python train.py --data_path train.txt --total_steps 40000 --embed_dim 768 --n_layers 12 --n_heads 12 --vocab_size 40960

(Замените train.txt на имя вашего файла, если оно другое). Что произойдет? Скрипт начнет анализировать ваш текст и создаст файл tokenizer.json с размером словаря 40960 токенов (кратность 64 идеальна для скорости видеокарты). После создания токенизатора скрипт выдаст ошибку - это абсолютно нормально! Ошибка возникает, потому что для самого обучения скрипту нужны бинарные форматы, а не .txt. Главное - токенизатор готов!

Шаг 3: Конвертация датасета в бинарный формат (.bin)

Чтобы видеокарта и ОЗУ не "захлебнулись" от гигабайтов текста, мы конвертируем его в специальный формат np.memmap.

  1. Откройте скрипт Prepare_data.py в любом редакторе кода.
  2. В строке TXT_FILE = укажите ваш текстовый файл (например, 'train.txt').
  3. В строке BIN_FILE = укажите желаемое имя выхода (например, 'train.bin').
  4. Совет: Скрипт настроен так, чтобы накапливать в ОЗУ по 9 млн токенов и порциями сбрасывать их на жесткий диск. Это экономит ресурсы вашего ПК.
  5. Запустите этот скрипт. После завершения проделайте то же самое для файла val.txt, чтобы получить val.bin.

Шаг 4: Запуск обучения

Теперь у вас есть всё необходимое. Возвращаемся в консоль и запускаем финальную команду:

python train.py --data_path train.bin --val_path val.bin --total_steps 40000 --save_every 1000 --batch_size 4 --accumulate_steps 16 --embed_dim 768 --n_layers 12 --n_heads 12 --max_seq_len 1024 --lr 1e-4 --vocab_size 40960

⚙️Разбор параметров запуска Внимательно настройте эти параметры под свою видеокарту, иначе вы рискуете получить ошибку OUT OF MEMORY (нехватка VRAM):

  • --data_path и --val_path - пути к вашим сгенерированным .bin файлам (обучение и валидация). Валидация строго рекомендуется!
  • --total_steps - сколько всего градиентных шагов сделает модель до завершения.
  • --save_every - как часто сохранять веса. Например, 1000 значит, что каждый тысячный шаг в папке checkpoints/ будет появляться безопасное сохранение.
  • --batch_size - сколько текстов видеокарта обрабатывает за один раз. Для 8 ГБ VRAM значение 4 при контексте 1024 - это золотая середина.
  • --accumulate_steps - накопление градиентов. Эффективный размер батча равен batch_size * accumulate_steps. Стандарт индустрии - делать итоговое число равным 64. То есть при батче 4, накопление должно быть 16 (16 * 4 = 64).
  • --max_seq_len - размер контекстного окна (сколько токенов модель "видит" одновременно). Увеличение сильно жрет VRAM.
  • --embed_dim - размерность скрытого состояния (ширина "мозга"). Чем больше, тем сложнее логику может усвоить модель. 768 - отличный старт для компактной модели.
  • --n_layers и --n_heads - количество слоев и голов внимания. Важное правило: embed_dim разделенный на n_heads всегда должен равняться 64 (например, 768 / 12 = 64). Иначе модель будет работать медленно и «глупее».
  • --lr - скорость обучения (Learning Rate). Для начала претрейна стандарт - 1e-4.
  • --vocab_size - размер вашего токенизатора. Строго должен совпадать с размером, который вы задали на Шаге 2 (например, 40960).

2. Инференс

Создайте папку checkpoints в директории с проектом и поместите туда скачанный файл модели (например, model.safetensors). Откройте терминал и перейдите в папку с проектом:

cd C:\Users\YourName\Desktop\FileName

### 2. Запуск
Для обычного текста: python генерация.py --checkpoint checkpoints/model.safetensors --prompt "опасен ли искуственный интеллект?" --temperature 0.7 --rep_penalty 1.2 --max_new_tokens 400 --device cuda

Для диалогового текста: python generate.py --checkpoint checkpoints/Vexion-LM_mini_lora.safetensors --prompt "[CLS] Что такое человек [SEP] " --temperature 0.7 --device cuda --use_lora

📝 Правила написания промпта (prompt):
[CLS] — спецтокен начала вашего запроса. После него пишите свой вопрос.

[SEP] — спецтокен начала ответа ИИ. После этого токена нельзя писать никакой текст, иначе модель сломает логику ответа!

Флаг --use_lora обязателен при запуске диалоговых версий модели, чтобы скрипт подключил дополнительные веса адаптеров.
Downloads last month
1,107
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support