NanoMind1-10M

NanoMind1-10M — компактная русскоязычная языковая модель на архитектуре GRU, обученная с нуля на корпусе технологических новостей и статей. Это экспериментальная модель из коллекции NanoMind1, предназначенная для локальной генерации текста, сравнения архитектур и экспериментов с маленькими language models.

Модель не является instruction-tuned чат-ассистентом. Это base model: она продолжает текст, а не выполняет команды пользователя.

Описание

NanoMind1-10M обучена на русскоязычном технологическом корпусе, включающем материалы 3DNews, Habr и iXBT. Модель усвоила стиль IT-новостей, обзоров, технических статей и тематическую лексику: смартфоны, ПК, комплектующие, ИИ, разработка, игры и потребительская электроника.

GRU-версия создана как лёгкая альтернатива Transformer-модели NanoMind1TR-10M. Она проще в инференсе и может быть интересна для экспериментов с рекуррентными языковыми моделями.

Архитектура

Параметр Значение
Архитектура GRU
Параметров 10.2M
Размер словаря 16,000
Контекст 512 токенов
Embedding 256
Hidden size 768
Слоёв GRU 2
Dropout 0.1
Токенизатор BPE
Тип весов bfloat16

Embedding и выходной слой используют tied weights.

Обучение

Параметр Значение
Корпус ~210M токенов
Эпохи 2
Batch size 32
Контекст 512
Learning rate 6e-4
Optimizer AdamW
Weight decay 0.1
Gradient clipping 1.0
Финальный Val PPL 55.37

Модель обучена с нуля на подготовленном и токенизированном корпусе русскоязычных технологических текстов.

Возможности

Модель может:

  • продолжать текст в стиле русскоязычных IT-новостей;
  • генерировать заголовки и тематические абзацы;
  • имитировать стиль Habr, обзоров и технологических публикаций;
  • использоваться для экспериментов с sampling и fine-tuning;
  • работать как очень маленькая base model для локальных экспериментов.

Ограничения

Это экспериментальная base model, поэтому она:

  • не следует инструкциям как чат-ассистент;
  • может выдумывать факты, даты, характеристики и названия;
  • может повторяться или уходить от темы;
  • не предназначена для критически важных задач;
  • обучена преимущественно на технологическом контенте;
  • имеет небольшой контекст — 512 токенов.

Пример использования

import torch
from tokenizers import Tokenizer
from safetensors.torch import load_file

from modeling_nanomind_gru import GRULM

tokenizer = Tokenizer.from_file("tokenizer.json")

state_dict = load_file("model.safetensors")

model = GRULM(
    vocab_size=16000,
    embedding_dim=256,
    hidden_size=768,
    num_layers=2,
    dropout=0.1,
    tie_embeddings=True,
)

model.load_state_dict(state_dict, strict=False)
model.eval()

prompt = "Компания Nvidia представила"

encoded = tokenizer.encode(prompt, add_special_tokens=False)
tokens = encoded.ids[:]

hidden = None

with torch.no_grad():
    for _ in range(128):
        input_ids = torch.tensor([tokens[-512:]], dtype=torch.long)

        logits, hidden = model(input_ids, hidden)

        next_token = torch.argmax(logits[0, -1]).item()
        tokens.append(next_token)

print(tokenizer.decode(tokens))

Рекомендуемая генерация

{
  "temperature": 0.8,
  "top_k": 20,
  "top_p": 0.9,
  "repetition_penalty": 1.2,
  "max_tokens": 256
}

Для более предсказуемого текста используйте temperature: 0.2–0.5 или жадную генерацию.

Файлы

Файл Описание
model.safetensors Веса модели
config.json Конфигурация модели и генерации
tokenizer.json BPE-токенизатор, 16K

Связанные модели

Лицензия

Модель распространяется по лицензии Apache 2.0.

Downloads last month
86
Safetensors
Model size
14.3M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support