|
|
--- |
|
|
language: |
|
|
- ru |
|
|
- en |
|
|
library_name: transformers |
|
|
pipeline_tag: text-generation |
|
|
license: llama3.2 |
|
|
base_model: meta-llama/Llama-3.2-3B-Instruct |
|
|
tags: |
|
|
- llama-3.2 |
|
|
- personalization |
|
|
- russian |
|
|
- telegram |
|
|
- lora |
|
|
- tpu |
|
|
- conversational-ai |
|
|
- fine-tuned |
|
|
model_type: llama |
|
|
datasets: |
|
|
- custom_telegram_dialogs |
|
|
--- |
|
|
|
|
|
# 🤖 LLaMA 3.2 3B Персонализированная Модель |
|
|
|
|
|
Персонализированная модель на основе **LLaMA 3.2 3B Instruct**, обученная на диалогах Telegram с использованием **LoRA (Low-Rank Adaptation)** на **TPU v3-8**. |
|
|
|
|
|
## 📊 Результаты обучения |
|
|
|
|
|
 |
|
|
|
|
|
| Метрика | Training | Validation | |
|
|
|---------|----------|------------| |
|
|
| **Loss** | 2.3811 | 2.2514 | |
|
|
| **Perplexity** | 10.82 | 9.50 | |
|
|
|
|
|
- ⏱️ **Время обучения**: ~8.1 часов на TPU v3-8 |
|
|
- 🔄 **Всего шагов**: 8,012 (1 эпоха) |
|
|
- 📈 **Отличная генерализация**: validation loss ниже training loss |
|
|
|
|
|
## 🔧 Конфигурация LoRA |
|
|
|
|
|
```yaml |
|
|
LoRA Configuration: |
|
|
rank: 16 |
|
|
alpha: 32 |
|
|
dropout: 0.1 |
|
|
target_modules: |
|
|
- q_proj |
|
|
- k_proj |
|
|
- v_proj |
|
|
- o_proj |
|
|
- gate_proj |
|
|
- up_proj |
|
|
``` |
|
|
|
|
|
## 🎯 Особенности модели |
|
|
|
|
|
- 🗣️ **Персонализация**: Обучена имитировать стиль общения конкретного пользователя |
|
|
- 🇷🇺 **Русский язык**: Оптимизирована для русскоязычных диалогов |
|
|
- 💬 **Telegram-стиль**: Адаптирована под неформальное общение в мессенджерах |
|
|
- ⚡ **Эффективность**: Использует LoRA для быстрого fine-tuning |
|
|
|
|
|
## 💾 Использование |
|
|
|
|
|
### Быстрый старт |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
from peft import PeftModel |
|
|
import torch |
|
|
|
|
|
# Загрузка базовой модели |
|
|
base_model_name = "meta-llama/Llama-3.2-3B-Instruct" |
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
base_model_name, |
|
|
torch_dtype=torch.bfloat16, |
|
|
device_map="auto" |
|
|
) |
|
|
|
|
|
# Загрузка LoRA адаптера |
|
|
model = PeftModel.from_pretrained(model, "Aze4ka/projectme") |
|
|
|
|
|
# Загрузка токенизатора |
|
|
tokenizer = AutoTokenizer.from_pretrained("Aze4ka/projectme") |
|
|
|
|
|
# Функция генерации ответа |
|
|
def generate_response(prompt, max_new_tokens=100, temperature=0.7): |
|
|
# Форматирование в стиле LLaMA 3.2 |
|
|
formatted_prompt = f"<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\n{prompt}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n" |
|
|
|
|
|
inputs = tokenizer(formatted_prompt, return_tensors="pt") |
|
|
|
|
|
with torch.no_grad(): |
|
|
outputs = model.generate( |
|
|
**inputs, |
|
|
max_new_tokens=max_new_tokens, |
|
|
temperature=temperature, |
|
|
top_p=0.9, |
|
|
do_sample=True, |
|
|
pad_token_id=tokenizer.pad_token_id, |
|
|
eos_token_id=tokenizer.eos_token_id |
|
|
) |
|
|
|
|
|
response = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True) |
|
|
return response.strip() |
|
|
|
|
|
# Пример использования |
|
|
response = generate_response("Привет! Как дела?") |
|
|
print(response) |
|
|
``` |
|
|
|
|
|
### Примеры диалогов |
|
|
|
|
|
**Пользователь**: Привет! Как дела? |
|
|
**Модель**: Привет! Дела отлично, спасибо! А у тебя как? |
|
|
|
|
|
**Пользователь**: Что думаешь о машинном обучении? |
|
|
**Модель**: ML — это невероятно! Постоянно развивается, столько возможностей... |
|
|
|
|
|
## 🛠️ Технические детали |
|
|
|
|
|
- **Базовая модель**: `meta-llama/Llama-3.2-3B-Instruct` |
|
|
- **Метод обучения**: LoRA (Low-Rank Adaptation) |
|
|
- **Платформа**: TPU v3-8 на Kaggle |
|
|
- **Фреймворк**: PyTorch + torch_xla |
|
|
- **Библиотеки**: transformers, peft, wandb |
|
|
|
|
|
## 📈 Процесс обучения |
|
|
|
|
|
- 📊 **Логирование**: Wandb с метриками каждые 10 шагов |
|
|
- 🔄 **Валидация**: Каждые 1000 шагов |
|
|
- 💾 **Checkpoint'ы**: Автоматическое сохранение |
|
|
- ⚡ **Оптимизация**: AdamW с cosine scheduler |
|
|
|
|
|
## ⚡ Рекомендации по использованию |
|
|
|
|
|
- **Temperature**: 0.7 для сбалансированности |
|
|
- **Max tokens**: 100-150 для коротких ответов |
|
|
- **Top-p**: 0.9 для разнообразия |
|
|
- **Batch size**: 1-4 для инференса |
|
|
|
|
|
## 🎓 Цитирование |
|
|
|
|
|
```bibtex |
|
|
@misc{llama32-personalized-2025, |
|
|
title={LLaMA 3.2 3B Персонализированная модель}, |
|
|
author={Aze4ka}, |
|
|
year={2025}, |
|
|
publisher={HuggingFace}, |
|
|
url={https://huggingface.co/Aze4ka/projectme} |
|
|
} |
|
|
``` |
|
|
|
|
|
## 📄 Лицензия |
|
|
|
|
|
Эта модель лицензирована в соответствии с [LLaMA 3.2 Community License](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/LICENSE). |
|
|
|
|
|
--- |
|
|
|
|
|
*Модель создана в образовательных целях для демонстрации персонализации LLM на русском языке.* |
|
|
|