68 lines
2.5 KiB
Markdown
68 lines
2.5 KiB
Markdown
---
|
||
language:
|
||
- ru
|
||
license: apache-2.0
|
||
tags:
|
||
- text-generation
|
||
- pytorch
|
||
- causal-lm
|
||
- llama
|
||
model_name: Clornet-150m
|
||
pipeline_tag: text-generation
|
||
datasets:
|
||
- uonlp/CulturaX
|
||
---
|
||
|
||
# Clornet 150M
|
||
|
||
**Clornet** - это предварительно обученная Decoder-only языковая модель объемом **150 миллионов параметров**, построенная на базе классической архитектуры **Llama** и оптимизированная для генерации и обработки русскоязычного текста.
|
||
|
||
Модель была обучена с нуля на отфильтрованном русскоязычном корпусе данных и демонстрирует стабильную сходимость с итоговым показателем перплексии **22.59**.
|
||
|
||
## Основные характеристики
|
||
|
||
| Параметр | Значение |
|
||
| :--- | :--- |
|
||
| **Объем параметров** | ~150M |
|
||
| **Архитектура** | Llama |
|
||
| **Размер словаря** | 24,576 токенов |
|
||
| **Длина контекста** | 2048 токенов |
|
||
| **Основной язык обучения** | Русский |
|
||
| **Перплексия** | **22.59** (на валидационной выборке) |
|
||
| **Лицензия** | Apache 2.0 |
|
||
|
||
## Инференс
|
||
|
||
Для запуска модели рекомендуется использовать библиотеку `transformers`. Пример кода для инференса на Python:
|
||
|
||
```python
|
||
import torch
|
||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||
|
||
model_name = "Toondra/Clornet-150m"
|
||
|
||
device = "cuda" if torch.cuda.is_available() else "cpu"
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
|
||
|
||
prompt = "В глубоком лесу росло странное дерево, которое"
|
||
inputs = tokenizer(prompt, return_tensors="pt").to(device)
|
||
|
||
with torch.no_grad():
|
||
outputs = model.generate(
|
||
**inputs,
|
||
max_new_tokens=64,
|
||
do_sample=True,
|
||
top_k=20,
|
||
top_p=0.8,
|
||
temperature=0.4,
|
||
repetition_penalty=1.15
|
||
)
|
||
|
||
# Срезаем промпт, чтобы не дублировать его на выводе
|
||
generated_ids = outputs[0][inputs.input_ids.shape[-1]:]
|
||
generated_text = tokenizer.decode(generated_ids, skip_special_tokens=True)
|
||
|
||
print("Результат генерации:")
|
||
print(generated_text)
|
||
``` |