|
--- |
|
datasets: |
|
- IlyaGusev/ru_turbo_alpaca |
|
- yahma/alpaca-cleaned |
|
language: |
|
- ru |
|
- en |
|
pipeline_tag: text2text-generation |
|
inference: false |
|
--- |
|
|
|
# LLaMA 13B trained on the ru_turbo_alpaca, Russian instructions dataset |
|
|
|
**Important**: You should probably use [Saiga](https://huggingface.co/IlyaGusev/saiga_13b_lora). It has regular updates and should be better in every task. |
|
|
|
Based on [LLaMA 13B](https://huggingface.co/decapoda-research/llama-13b-hf). |
|
|
|
* This is an adapter-only version. |
|
* llama.cpp version: [link](https://huggingface.co/IlyaGusev/llama_13b_ru_turbo_alpaca_lora_llamacpp). |
|
|
|
Colab: [link](https://colab.research.google.com/drive/18GG-zwxyGAHoVXghlOQONkxb_GpR7USj) |
|
|
|
Training code: [link](https://github.com/IlyaGusev/rulm/tree/master/self_instruct) |
|
|
|
Prompt template for v2: |
|
``` |
|
### Задание: {instruction} |
|
### Вход: {input} |
|
### Ответ: |
|
``` |
|
|
|
or |
|
|
|
``` |
|
### Задание: {instruction} |
|
### Ответ: |
|
``` |
|
|
|
Versions: |
|
- v2, April 8, 2023: A model trained with outputs capped at 800 tokens instead of 400. Also, now only a single prompt template is supported. |
|
- `revision="3dff86a20f80ba203fec6e986a3422b83822ca70"` |
|
- Final loss: 0.995 |
|
- Time: 38 hours, 35 minutes |
|
- Hardware: 1x RTX 3090Ti |
|
- Wandb link: [link](https://wandb.ai/ilyagusev/rulm_self_instruct/runs/wy66bwim/overview?workspace=user-ilyagusev) |
|
- v1, April 2, 2023: Original model trained with 400 max tokens in outputs. Both Russian and English are supported, trained on the ru_turbo_alpaca and alpaca-cleaned. |
|
- `revision="97209c36c9261eb9527371a341c70f90c39ee158"` |
|
- Final loss: 1.074 |
|
- Time: 53 hours, 53 minutes |
|
- Hardware: 1x RTX 3090 |
|
|
|
```python |
|
import torch |
|
from peft import PeftModel, PeftConfig |
|
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig |
|
|
|
MODEL_NAME = "IlyaGusev/llama_13b_ru_turbo_alpaca_lora" |
|
|
|
config = PeftConfig.from_pretrained(MODEL_NAME) |
|
model = AutoModelForCausalLM.from_pretrained( |
|
config.base_model_name_or_path, |
|
load_in_8bit=True, |
|
torch_dtype=torch.float16, |
|
device_map="auto" |
|
) |
|
model = PeftModel.from_pretrained(model, MODEL_NAME, torch_dtype=torch.float16) |
|
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) |
|
model.eval() |
|
|
|
generation_config = GenerationConfig.from_pretrained(MODEL_NAME) |
|
data = tokenizer(["### Задание: Почему трава зеленая?\n### Ответ: "], return_tensors="pt") |
|
data = {k: v.to(model.device) for k, v in data.items() if k in ("input_ids", "attention_mask")} |
|
output_ids = model.generate(**data, generation_config=generation_config)[0] |
|
print(tokenizer.decode(output_ids, skip_special_tokens=True)) |
|
|
|
``` |
|
|
|
Examples: |
|
``` |
|
### Задание: Почему трава зеленая? |
|
### Ответ: Трава зеленая из-за содержания в ней хлорофилла, который является пигментом, ответственным за зеленый цвет растений. |
|
Хлорофилл содержится в хлоропластах, органе, который находится внутри клеток растений и отвечает за фотосинтез - |
|
процесс, который позволяет растениям использовать солнечную энергию для создания сахара из воды и углекислого газа. |
|
Хлорофиллы способны поглощать световой спектр с длиной волны от 400 до 700 нанометров, что приводит к зеленому цвету растений. |
|
``` |
|
|
|
``` |
|
### Задание: Сочини длинный рассказ, обязательно упоминая следующие объекты. |
|
### Вход: Таня, мяч |
|
### Ответ: Однажды летом Таня решила пойти на прогулку в парк. Она взяла с собой свой любимый мяч и отправилась на прогулку. |
|
Парк был очень красивым и зеленым. Таня гуляла по его аллее, наслаждаясь свежим воздухом и красивыми цветами. |
|
Вскоре она заметила, что рядом с ней стоит маленький мальчик. Он был немного младше Тани, но был очень добрым и дружелюбным. |
|
"Здравствуй, девочка", - сказал мальчик, улыбаясь. |
|
Таня улыбнулась ему в ответ и предложила сыграть в мяч. Мальчик согласился, и они начали играть вместе. |
|
Они играли долгое время, и Таня забыла о времени и о том, что она должна была вернуться домой. |
|
Когда они закончили играть, мальчик попросил Таню поиграть с ним еще раз. Таня согласилась, и они продолжили играть. |
|
Когда Таня вернулась домой, она была очень уставшая, но она была очень счастлива, что провела такую замечательную прогулку и познакомилась с таким замечательным мальчиком. |
|
С тех пор Таня и мальчик стали лучшими друзьями. Они играли вместе каждый день, и Таня всегда чувствовала себя счастливой, когда играла с ним. |
|
Таким образом, Таня обнаружила, что игра в мяч может быть не только увлекательным, но и способствовать созданию новых дружеских отношений. |
|
``` |