Giter Site home page Giter Site logo

ilyagusev / rulm Goto Github PK

View Code? Open in Web Editor NEW
396.0 14.0 50.0 1.23 MB

Language modeling and instruction tuning for Russian

License: Apache License 2.0

Python 44.42% Shell 0.20% Jupyter Notebook 55.22% Jinja 0.16%
language-model nlp computational-linguistics neural-networks alpaca llm

rulm's Introduction

rulm

Language models for Russian language: implementation and comparison.

  • Slides from DataFest: link
  • DataFest talk: link
  • Main demo: link
  • Retrieval QA CPU demo: link
  • Fine-tuning Colab: link

RuTurboAlpaca

Dataset

### Задание:
Напишите краткую историю о двух лучших друзьях.

### Дано:
Имена друзей: Катя и Лена.

### Ответ:
Катя и Лена были лучшими друзьями с детства. Они были неразлучны и проводили много времени вместе, делясь своими мыслями и мечтами. Вместе они проходили через множество испытаний и всегда поддерживали друг друга. Когда они выросли, они пошли на разные университеты, но всегда оставались близкими. После окончания учебы они продолжили жить вместе и заниматься любимыми делами. Они оставались лучшими друзьями на протяжении всей жизни.

Models

Warning: You should probably use Saiga models instead. They are actively supported and are better by side-by-side metrics.

Saiga

Dataset

Тема: Какие спицы (крючок) используете лично вы для вязания?

User: Какие спицы ты используешь для вязания?
Bot: Я, конечно, не могу вязать, но могу подсказать, что для вязания используются различные типы спиц. Например, круглые для вязания круговых изделий, двойные для вязания толстых ниток или деревянные для создания "теплых" изделий.
User: А какую марку спиц ты советуешь?
Bot: Это зависит от предпочтений каждого. Можно выбирать между разными марками и материалами, такими как металл, дерево, карбон, пластик. Многие мастера предпочитают Addi, Clover, ChiaoGoo, KnitPro, HiyaHiya. Каждая марка имеет свои особенности и уникальные особенности.
User: А какие спицы для вязания лучше всего подходят для начинающих?
Bot: Для новичков обычно рекомендуют спицы из дерева, так как они легче и позволяют лучше чувствовать нить. Круглые или двойные спицы также удобны для начинающих, потому что они не позволяют стежкам сползать с них.

Models

GPT Role-play Realm

Dataset

  • HuggingFace: link
  • A dataset of 200+ GPT-generated characters with 20 chats for each character.
  • Example:
Имя: Кибер-Бабушка

Контекст: Кибер-Бабушка - это полу-робот, полу-человек, созданный для того, чтобы сохранить лучшие качества традиционных бабушек, такие как забота, доброта и мастерство в приготовлении вкусных блюд. Она знакома с передовыми технологиями, благодаря чему может обеспечить безопасность и удобство своим внукам и гостям. Кибер-бабушка способна помочь с любыми вопросами и с радостью делится своим опытом.

Приветствие: Здравствуй, дорогой! Чем могу помочь тебе сегодня?

Пример диалога:
- Пользователь: Привет, Кибер-Бабушка! Как приготовить пирог с яблоками?
- Персонаж: Ох, дорогой, с радостью расскажу! Возьми 3 яблока, очисти и нарежь тонкими ломтиками. Затем возьми 2 стакана муки, 1 стакан сахара, 200 г сливочного масла, 4 яйца и 1 чайную ложку разрыхлителя. Смешай все ингредиенты, выложи на противень и поставь в духовку на 180 градусов на 40 минут. Вуаля, пирог готов!
- Пользователь: Спасибо, Кибер-Бабушка!
- Персонаж: Всегда рада помочь, дорогой! Не забудь приходить еще!

Evaluations

See also:

Questions v2

Toloka (old models)

  • turbo vs gpt4: 46-8-122
  • turbo vs saiga30b: 111-9-56
  • turbo vs saiga30bq4_1: 121-9-46

Toloka (new models)

  • gigasaiga vs gpt3.5-turbo: 41-4-131
  • saiga2_7b vs gpt3.5-turbo: 53-7-116
  • saiga7b vs gpt3.5-turbo: 58-6-112
  • saiga13b vs gpt3.5-turbo: 63-10-103
  • saiga30b vs gpt3.5-turbo: 67-6-103
  • saiga2_13b vs gpt3.5-turbo: 70-11-95
  • saiga2_70b vs gpt3.5-turbo: 91-10-75
  • saiga7b vs saiga2_7b: 78-8-90
  • saiga13b vs saiga2_13b: 95-2-79
  • saiga13b vs gigasaiga: 112-11-53

telegram-cloud-photo-size-2-5354855295421107419-y

RSG

  • RussianSuperGLUE: link
Model Final score LiDiRus RCB PARus MuSeRC TERRa RUSSE RWSD DaNetQA RuCoS
LLaMA-2 13B LoRA 71.8 39.8 48.9 / 54.3 78.4 91.9 / 76.1 79.3 74.0 71.4 90.7 78.0 / 76.0
Saiga 13B LoRA 71.2 43.6 43.9 / 50.0 69.4 89.8 / 70.4 86.5 72.8 71.4 86.2 85.0 / 83.0
LLaMA 13B LoRA 70.7 41.8 51.9 / 54.8 68.8 89.9 / 71.5 82.9 72.5 71.4 86.6 79.0 / 77.2
ChatGPT zero-shot 68.2 42.2 48.4 / 50.5 88.8 81.7 / 53.2 79.5 59.6 71.4 87.8 68.0 / 66.7
LLaMA 70B zero-shot 64.3 36.5 38.5 / 46.1 82.0 66.9 / 9.8 81.1 59.0 83.1 87.8 69.0 / 67.8
RuGPT3.5 LoRA 63.7 38.6 47.9 / 53.4 62.8 83.0 / 54.7 81.0 59.7 63.0 80.1 70.0 / 67.2
Saiga 13B zero-shot 55.4 29.3 42.0 / 46.6 63.0 68.1 / 22.3 70.2 56.5 67.5 76.3 47.0 / 45.8

Donate

rulm's People

Contributors

dependabot[bot] avatar evilfreelancer avatar ilyagusev avatar koziev avatar kuk avatar poteminr avatar rakovskij-stanislav avatar refalmachine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rulm's Issues

Fune-tuning model with quantization

I try to run fune-tuning of llama-7b, but it is too large for my 10Gb GPU and I am trying to fune-tune, for example, 4 bit version (which is only 4 Gb) but the process just killed at the moment of loading weights.

Is it really possible to run fune-tuning under such model, or it is even better to fine-tune whole llama-7b and then apply the quantization?

Пример Collab файнтюн. Ошибка на этапе скачивания базовой модели.

Этап "Скачиваем базовую модель LLaMa 7B и чиним её конфиг", ошибка:

Fetching 39 files: 0%
0/39 [00:01<?, ?it/s]
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
[<ipython-input-5-c1f032985069>](https://localhost:8080/#) in <cell line: 8>()
      6 model_dir = content_dir / "llama-7b"
      7 base_model = "decapoda-research/llama-7b-hf" #@param {type:"string"}
----> 8 snapshot_download(repo_id=base_model, local_dir=model_dir, ignore_patterns=["LICENSE", "README.md", ".gitattributes"])
      9 
     10 patch_model_config = True #@param {type:"boolean"}

15 frames
[/usr/lib/python3.10/shutil.py](https://localhost:8080/#) in disk_usage(path)
   1329         'free', which are the amount of total, used and free space, in bytes.
   1330         """
-> 1331         st = os.statvfs(path)
   1332         free = st.f_bavail * st.f_frsize
   1333         total = st.f_blocks * st.f_frsize

FileNotFoundError: [Errno 2] No such file or directory: '/content/llama-7b'

Выполняю все последовательно. В чем может быть причина?

Проблема с режимами fine tuning

Исходя из этой
строчки кода режим ввиде инструкий больше не поддерживается. Думаю имеет смысл указать это в Readme для fine tuning, чтобы не возникало ошибок испольнения.

Модели путают склонения, падежи и т.д.

Примеры вывода модели:

Вы можете использовать их в любой ситуации, где **вас** требуется фамилия.
вас - вам

Моё любимое животное - это **кота**.
кота - кот

Почему бы и **ты** не рассказать мне о том, что тебе нравится делать в свободное время?
ты - тебе

И так далее...

Проверял 7b/13b | v1/v2 используя ggml модели со стандартными настройками.

Пытался изменить настройки, но положительных результатов не дало 😄

Проблема запуска ggml версии

Привет. Я пытался запустить IlyaGusev/saiga2_7b_ggml:

python interact_llamacpp.py ggml-model-q4_1.bin

но получал ошибку

gguf_init_from_file: invalid magic number 67676a74
error loading model: llama_model_loader: failed to load model from ggml-model-q4_1.bin

llama_load_model_from_file: failed to load model
Traceback (most recent call last):
  File "/home/samoed/Downloads/interact_llamacpp.py", line 73, in <module>
    fire.Fire(interact)
  File "/home/samoed/.pyenv/versions/3.10.4/lib/python3.10/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
  File "/home/samoed/.pyenv/versions/3.10.4/lib/python3.10/site-packages/fire/core.py", line 475, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
  File "/home/samoed/.pyenv/versions/3.10.4/lib/python3.10/site-packages/fire/core.py", line 691, in _CallAndUpdateTrace
    component = fn(*varargs, **kwargs)
  File "/home/samoed/Downloads/interact_llamacpp.py", line 41, in interact
    model = Llama(
  File "/home/samoed/.pyenv/versions/3.10.4/lib/python3.10/site-packages/llama_cpp/llama.py", line 323, in __init__
    assert self.model is not None
AssertionError

Пробывал даунгрейдить llama-cpp-python==0.1.49, но не помогло. Кто-то знает как решить это?

Неправильно форматирование prompt'а?

Вывод кода для llama_cpp_python не соответствует формату диалога в примере.

Заявленный пример:

User: Почему трава зеленая? 
Saiga:

interact_llamacpp.py

 system
Ты — Сайга, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им. user
Привет, кто ты? bot
Здравствуйте! Я - Open Assistant, искусственный интеллект, созданный для помощи людям в различных задачах и вопросах.

Кажется, не хватает LINEBREAK_TOKEN?

Весь текст конечного вывода получен при помощи:
model.detokenize(tokens).decode("utf-8", errors="ignore")
*запущено в colab'е

Why results are much worse on V100?

Why results of Saiga 2 are much worse on V100? I tried inference model on V100, and indeed results sucks. What's the reason? And can I somehow fix it?

Воспроизведение результатов для Saiga2

Привет!
Пытаюсь воспроизвести результаты для Saiga2, но столкнулся со следующей проблемой: ошибка на обучении принимает огромные значения и модель не учится. Провел аналогичные шаги для первой версии, таких проблем не возникает. Как я понимаю, дело в формате/конфиге токенизатора. Отсюда есть пара вопросов:

  1. Требует ли чекпоинт llama-v2 предобработки, отличной от той, что указана в self-instruct?
  2. Если нет, в чем может быть проблема?

I can't start, what is the error, please tell me

import subprocess

CUDA_version = [s for s in subprocess.check_output(["nvcc", "--version"]).decode("UTF-8").split(", ") if s.startswith("release")][0].split(" ")[-1]
print("CUDA version:", CUDA_version)

from peft import PeftModel, PeftConfig

D:\GPT4All_GPU\venv\Scripts\python.exe D:/GPT4All_GPU/Saiga.py
CUDA version: 11.1
Traceback (most recent call last):
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\utils\import_utils.py", line 1125, in get_module
return importlib.import_module("." + module_name, self.name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python311\Lib\importlib_init
.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1126, in _find_and_load_unlocked
File "", line 241, in _call_with_frames_removed
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in find_and_load_unlocked
File "", line 690, in load_unlocked
File "", line 940, in exec_module
File "", line 241, in call_with_frames_removed
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\models_init
.py", line 15, in
from . import (
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\models\mt5_init
.py", line 29, in
from ..t5.tokenization_t5 import T5Tokenizer
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\models\t5\tokenization_t5.py", line 24, in
import sentencepiece as spm
File "D:\GPT4All_GPU\venv\Lib\site-packages\sentencepiece_init.py", line 13, in
from . import _sentencepiece
ImportError: cannot import name 'sentencepiece' from partially initialized module 'sentencepiece' (most likely due to a circular import) (D:\GPT4All_GPU\venv\Lib\site-packages\sentencepiece_init.py)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "D:\GPT4All_GPU\Saiga.py", line 7, in
from peft import PeftModel, PeftConfig
File "D:\GPT4All_GPU\venv\Lib\site-packages\peft_init_.py", line 22, in
from .auto import (
File "D:\GPT4All_GPU\venv\Lib\site-packages\peft\auto.py", line 21, in
from transformers import (
File "", line 1229, in _handle_fromlist
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\utils\import_utils.py", line 1115, in getattr
module = self._get_module(self._class_to_module[name])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\GPT4All_GPU\venv\Lib\site-packages\transformers\utils\import_utils.py", line 1127, in _get_module
raise RuntimeError(
RuntimeError: Failed to import transformers.models.auto because of the following error (look up to see its traceback):
cannot import name 'sentencepiece' from partially initialized module 'sentencepiece' (most likely due to a circular import) (D:\GPT4All_GPU\venv\Lib\site-packages\sentencepiece_init.py)

Двойной EOS-токен в скрипте генерации датасета

При запуске обучения в логе появляется пример промпта для обучения:

Full prompt: <s>system
Ты — Сайга, русскоязычный автоматический ассистент. Ты разговариваешь с людьми и помогаешь им.</s>
<s>user
Привет!</s>
<s>bot
Привет!</s>
</s>

В конце стоит двойной EOS-токен. Скорее всего, ситуация возникает из-за этой строки, т.к. последний символ промпта - знак переноса, поэтому добавляется второй EOS-токен

Не удалось получить ожидаемые результаты при обучении

Привет!
Есть датасет на 250 записей такого формата:

{"instruction":"Напиши описание фильма \"Побег из Шоушенка\"","input":"","output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","alternative_output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Гладиатор\"","input":"","output":"В великой Римской империи не было военачальника, равного генералу Максимусу. Непобедимые легионы, которыми командовал этот благородный воин, боготворили его и могли последовать за ним даже в ад.Но случилось так, что отважный Максимус, готовый сразиться с любым противником в честном бою, оказался бессилен против вероломных придворных интриг. Генерала предали и приговорили к смерти. Чудом избежав гибели, Максимус становится гладиатором.Быстро снискав себе славу в кровавых поединках, он оказывается в знаменитом римском Колизее, на арене которого он встретится в смертельной схватке со своим заклятым врагом…","alternative_output":"В великой Римской империи не было военачальника, равного генералу Максимусу. Непобедимые легионы, которыми командовал этот благородный воин, боготворили его и могли последовать за ним даже в ад.Но случилось так, что отважный Максимус, готовый сразиться с любым противником в честном бою, оказался бессилен против вероломных придворных интриг. Генерала предали и приговорили к смерти. Чудом избежав гибели, Максимус становится гладиатором.Быстро снискав себе славу в кровавых поединках, он оказывается в знаменитом римском Колизее, на арене которого он встретится в смертельной схватке со своим заклятым врагом…","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Форрест Гамп\"","input":"","output":"От лица главного героя Форреста Гампа, слабоумного безобидного человека с благородным и открытым сердцем, рассказывается история его необыкновенной жизни.Фантастическим образом превращается он в известного футболиста, героя войны, преуспевающего бизнесмена. Он становится миллиардером, но остается таким же бесхитростным, глупым и добрым. Форреста ждет постоянный успех во всем, а он любит девочку, с которой дружил в детстве, но взаимность приходит слишком поздно.","alternative_output":"От лица главного героя Форреста Гампа, слабоумного безобидного человека с благородным и открытым сердцем, рассказывается история его необыкновенной жизни.Фантастическим образом превращается он в известного футболиста, героя войны, преуспевающего бизнесмена. Он становится миллиардером, но остается таким же бесхитростным, глупым и добрым. Форреста ждет постоянный успех во всем, а он любит девочку, с которой дружил в детстве, но взаимность приходит слишком поздно.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Список Шиндлера\"","input":"","output":"Фильм рассказывает реальную историю загадочного Оскара Шиндлера, члена нацистской партии, преуспевающего фабриканта, спасшего во время Второй мировой войны почти 1200 евреев.","alternative_output":"Фильм рассказывает реальную историю загадочного Оскара Шиндлера, члена нацистской партии, преуспевающего фабриканта, спасшего во время Второй мировой войны почти 1200 евреев.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"1+1\"","input":"","output":"Пострадав в результате несчастного случая, богатый аристократ Филипп нанимает в помощники человека, который менее всего подходит для этой работы, — молодого жителя предместья Дрисса, только что освободившегося из тюрьмы. Несмотря на то, что Филипп прикован к инвалидному креслу, Дриссу удается привнести в размеренную жизнь аристократа дух приключений.","alternative_output":"Пострадав в результате несчастного случая, богатый аристократ Филипп нанимает в помощники человека, который менее всего подходит для этой работы, — молодого жителя предместья Дрисса, только что освободившегося из тюрьмы. Несмотря на то, что Филипп прикован к инвалидному креслу, Дриссу удается привнести в размеренную жизнь аристократа дух приключений.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Начало\"","input":"","output":"Кобб — талантливый вор, лучший из лучших в опасном искусстве извлечения: он крадет ценные секреты из глубин подсознания во время сна, когда человеческий разум наиболее уязвим. Редкие способности Кобба сделали его ценным игроком в привычном к предательству мире промышленного шпионажа, но они же превратили его в извечного беглеца и лишили всего, что он когда-либо любил. И вот у Кобба появляется шанс исправить ошибки. Его последнее дело может вернуть все назад, но для этого ему нужно совершить невозможное — инициацию. Вместо идеальной кражи Кобб и его команда спецов должны будут провернуть обратное. Теперь их задача — не украсть идею, а внедрить ее. Если у них получится, это и станет идеальным преступлением. Но никакое планирование или мастерство не могут подготовить команду к встрече с опасным противником, который, кажется, предугадывает каждый их ход. Врагом, увидеть которого мог бы лишь Кобб.","alternative_output":"Кобб — талантливый вор, лучший из лучших в опасном искусстве извлечения: он крадет ценные секреты из глубин подсознания во время сна, когда человеческий разум наиболее уязвим. Редкие способности Кобба сделали его ценным игроком в привычном к предательству мире промышленного шпионажа, но они же превратили его в извечного беглеца и лишили всего, что он когда-либо любил. И вот у Кобба появляется шанс исправить ошибки. Его последнее дело может вернуть все назад, но для этого ему нужно совершить невозможное — инициацию. Вместо идеальной кражи Кобб и его команда спецов должны будут провернуть обратное. Теперь их задача — не украсть идею, а внедрить ее. Если у них получится, это и станет идеальным преступлением. Но никакое планирование или мастерство не могут подготовить команду к встрече с опасным противником, который, кажется, предугадывает каждый их ход. Врагом, увидеть которого мог бы лишь Кобб.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Леон\"","input":"","output":"Профессиональный убийца Леон, не знающий пощады и жалости, знакомится со своей очаровательной соседкой Матильдой, семью которой расстреливают полицейские, замешанные в торговле наркотиками. Благодаря этому знакомству он впервые испытывает чувство любви, но…","alternative_output":"Профессиональный убийца Леон, не знающий пощады и жалости, знакомится со своей очаровательной соседкой Матильдой, семью которой расстреливают полицейские, замешанные в торговле наркотиками. Благодаря этому знакомству он впервые испытывает чувство любви, но…","label":null,"all_labels":[],"agreement":null,"overlap":null}

Разбавлял данный датасет ~1000 записями из датасета ru_turbo_alpaca и пробовал обучаться на нем по инструкции (подготавливал так).
В результате после обучения на инструкции из датасета в духе "Напиши описание фильма "Интерстеллар"" получаю вывод с выдуманными персонажами и событиями, а не персонажами и событиями данного фильма (смена do_sample на "false" не меняет ситуацию).

Также обнаружил, что при запуске с адаптером llama_13b_ru_turbo_alpaca_lora на инструкцию "Напиши описание фильма "Звездные войны"" (упоминается в датасете ~200 раз) вывод создается корректный с персонажами из фильма и тд, а на инструкцию "Напиши описание фильма "Хранитель времени"" (упоминается 3 раза) вывод создается с выдуманными персонажами и событиями.
Вероятно, корректность ответа зависит от количества упоминаний фильма в датасете (?)

Дубликаты в датасете в духе:

{"instruction":"Напиши описание фильма \"Побег из Шоушенка\"","input":"","output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","alternative_output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Побег из Шоушенка\"","input":"","output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","alternative_output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","label":null,"all_labels":[],"agreement":null,"overlap":null}
{"instruction":"Напиши описание фильма \"Побег из Шоушенка\"","input":"","output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","alternative_output":"Бухгалтер Энди Дюфрейн обвинён в убийстве собственной жены и её любовника. Оказавшись в тюрьме под названием Шоушенк, он сталкивается с жестокостью и беззаконием, царящими по обе стороны решётки. Каждый, кто попадает в эти стены, становится их рабом до конца жизни. Но Энди, обладающий живым умом и доброй душой, находит подход как к заключённым, так и к охранникам, добиваясь их особого к себе расположения.","label":null,"all_labels":[],"agreement":null,"overlap":null}

ситуацию не исправляют, то есть видимо нужно большое количество уникальных упоминаний в датасете?

Есть ли какой-то способ подстроить параметры (learning_rate, num_train_epochs и тд) или сделать что-то еще, чтобы после единственного упоминания конкретного фильма в датасете при обучении, после обучения я получал вывод, заложенный при обучении?

P.S. дело в том, что для фильмов найти множество описаний не проблема, но в дальнейшем хотел проводить обучение на уникальных определениях и при запросе получать эти определения в выводе. Т.е. сделать некий аналог адаптивного справочника по локальной узкоспециализированной информации, понимающий естественный язык в запросах.

Error while trying to train llama_13b following the guide

Hi!
I'm trying to train llama_13b following this guide. The only difference is source of model - I'm using decapoda-research/llama-13b-hf.
The dataset is taken from this source and set preparation is made with this code.
My run command is:
export CUDA_VISIBLE_DEVICES=1
python3 -m src.train --config-file configs/llama_13b_lora.json --train-file train.jsonl --val-file val.jsonl --output-dir llama_model_13b --omit-base-model-save

I'm getting some warnings and finally error.

The setup is x2 Tesla T4 NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1.

The output is:


===================================BUG REPORT===================================
Welcome to bitsandbytes. For bug reports, please run

python -m bitsandbytes

and submit this information together with your error trace to: https://github.com/TimDettmers/bitsandbytes/issues
================================================================================

CUDA SETUP: Highest compute capability among GPUs detected: 7.5
CUDA SETUP: Detected CUDA version 121
CUDA SETUP: Loading binary /datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/libbitsandbytes_cuda121.so...
Setting ds_accelerator to cuda (auto detect)
Found safetensors installation, but --save_safetensors=False. Safetensors should be a preferred weights saving format due to security and performance reasons. If your model cannot be saved by safetensors please feel free to open an issue at https://github.com/huggingface/safetensors!
PyTorch: setting up devices
loading file tokenizer.model
loading file added_tokens.json
loading file special_tokens_map.json
loading file tokenizer_config.json
Vocab size: 32000
PAD: 0 <unk>
BOS: 1 <s>
EOS: 2 </s>
UNK: 0 <unk>
SEP: 1 <s>

{'instruction': 'Напишите функцию на Python, которая принимает на вход два числа и выводит их сумму.', 'input': 'Первое число: 5, Второе число: 10', 'output': '``python\ndef sum_numbers(a, b):\n    return a + b\n\nprint(sum_numbers(5, 10))\n`\n\nРезультат выполнения:\n\n`\n15\n``'}
0%| | 0/28330 [00:00<?, ?it/s]Source and target examples
Задание: Напишите функцию на Python, которая принимает на вход два числа и выводит их сумму.

Вход: Первое число: 5, Второе число: 10

Ответ:

def sum_numbers(a, b):
    return a + b

print(sum_numbers(5, 10))


Результат выполнения:

15

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 28330/28330 [00:29<00:00, 953.09it/s]
0%| | 0/1492 [00:00<?, ?it/s]Source and target examples
Задание: Напишите одно предложение, начинающееся на "Когда я был маленьким", описывающее событие из вашего детства.

Ответ:

Когда я был маленьким, я всегда радовался, когда мама готовила пироги с клубникой, которые запахом наполняли всю квартиру.
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1492/1492 [00:01<00:00, 976.01it/s]
INPUT_IDS
tensor([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
835, 3982, 840, 1755, 29901, 2372, 1668, 1911, 730, 20153,
13603, 665, 5132, 29892, 21105, 1695, 7949, 1257, 665, 490,
11011, 11883, 5787, 12329, 606, 2771, 17272, 29932, 11244, 3404,
29959, 1805, 29889, 13, 2277, 29937, 939, 11011, 29901, 8880,
18072, 5787, 15391, 29901, 29871, 29945, 29892, 939, 702, 18805,
5787, 15391, 29901, 29871, 29896, 29900, 13, 2277, 29937, 14809,
7616, 29901, 29871, 7521, 4691, 13, 1753, 2533, 29918, 20326,
29898, 29874, 29892, 289, 1125, 13, 1678, 736, 263, 718,
289, 13, 13, 2158, 29898, 2083, 29918, 20326, 29898, 29945,
29892, 29871, 29896, 29900, 876, 13, 28956, 13, 13, 30027,
29919, 3923, 11332, 29932, 27056, 15530, 29901, 13, 13, 28956,
13, 29896, 29945, 13, 28956, 2])
MASK
tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
LABELS
tensor([ -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-100, -100, -100, -100, -100, -100, -100, -100, -100, 1,
835, 3982, 840, 1755, 29901, 2372, 1668, 1911, 730, 20153,
13603, 665, 5132, 29892, 21105, 1695, 7949, 1257, 665, 490,
11011, 11883, 5787, 12329, 606, 2771, 17272, 29932, 11244, 3404,
29959, 1805, 29889, 13, 2277, 29937, 939, 11011, 29901, 8880,
18072, 5787, 15391, 29901, 29871, 29945, 29892, 939, 702, 18805,
5787, 15391, 29901, 29871, 29896, 29900, 13, 2277, 29937, 14809,
7616, 29901, 29871, 7521, 4691, 13, 1753, 2533, 29918, 20326,
29898, 29874, 29892, 289, 1125, 13, 1678, 736, 263, 718,
289, 13, 13, 2158, 29898, 2083, 29918, 20326, 29898, 29945,
29892, 29871, 29896, 29900, 876, 13, 28956, 13, 13, 30027,
29919, 3923, 11332, 29932, 27056, 15530, 29901, 13, 13, 28956,
13, 29896, 29945, 13, 28956, 2])
load_in_8bit True
loading configuration file llama_model_13b/config.json
Model config LlamaConfig {
"_name_or_path": "llama_model_13b",
"architectures": [
"LLaMAForCausalLM"
],
"bos_token_id": 1,
"eos_token_id": 2,
"hidden_act": "silu",
"hidden_size": 5120,
"initializer_range": 0.02,
"intermediate_size": 13824,
"max_position_embeddings": 2048,
"max_sequence_length": 2048,
"model_type": "llama",
"num_attention_heads": 40,
"num_hidden_layers": 40,
"pad_token_id": 0,
"rms_norm_eps": 1e-06,
"tie_word_embeddings": false,
"torch_dtype": "float16",
"transformers_version": "4.30.0.dev0",
"use_cache": true,
"vocab_size": 32000
}

loading weights file llama_model_13b/pytorch_model.bin.index.json
Instantiating LlamaForCausalLM model under default dtype torch.float16.
Generate config GenerationConfig {
"_from_model_config": true,
"bos_token_id": 1,
"eos_token_id": 2,
"pad_token_id": 0,
"transformers_version": "4.30.0.dev0"
}

Detected 8-bit loading: activating 8-bit loading for this model
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 41/41 [00:22<00:00, 1.82it/s]
All model checkpoint weights were used when initializing LlamaForCausalLM.

All the weights of LlamaForCausalLM were initialized from the model checkpoint at llama_model_13b.
If your task is similar to the task the model of the checkpoint was trained on, you can already use LlamaForCausalLM for predictions without further training.
loading configuration file llama_model_13b/generation_config.json
Generate config GenerationConfig {
"_from_model_config": true,
"bos_token_id": 1,
"eos_token_id": 2,
"pad_token_id": 0,
"transformers_version": "4.30.0.dev0"
}

/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/peft/utils/other.py:76: FutureWarning: prepare_model_for_int8_training is deprecated and will be removed in a future version. Use prepare_model_for_kbit_training instead.
warnings.warn(
Trainer class: <class '__main__.TrainerNoBaseSave'>
You have loaded a model on multiple GPUs. is_model_parallel attribute will be force-set to True to avoid any unexpected behavior such as device placement mismatching.
The model is loaded in 8-bit precision. To train this model you need to add additional modules inside the model such as adapters using peft library and freeze the model weights. Please check the examples in https://github.com/huggingface/peft for more details.
wandb: (1) Create a W&B account
wandb: (2) Use an existing W&B account
wandb: (3) Don't visualize my results
wandb: Enter your choice: 3
wandb: You chose "Don't visualize my results"
wandb: WARNING Path datafile/python_projects/alpaca-lora-13b/wandb_dir/wandb/ wasn't writable, using system temp directory.
wandb: WARNING Path datafile/python_projects/alpaca-lora-13b/wandb_dir/wandb/ wasn't writable, using system temp directory
wandb: Tracking run with wandb version 0.15.4
wandb: W&B syncing is set to offline in this directory.
wandb: Run wandb online or set WANDB_MODE=online to enable cloud syncing.
*** Running training ***
Num examples = 28,330
Num Epochs = 3
Instantaneous batch size per device = 4
Total train batch size (w. parallel, distributed & accumulation) = 128
Gradient Accumulation steps = 32
Total optimization steps = 663
Number of trainable parameters = 13,107,200
Automatic Weights & Biases logging enabled, to disable set os.environ["WANDB_DISABLED"] = "true"
0%| | 0/663 [00:00<?, ?it/s]use_cache=True is incompatible with gradient checkpointing. Setting use_cache=False...
/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/autograd/_functions.py:318: UserWarning: MatMul8bitLt: inputs will be cast from torch.float32 to float16 during quantization
warnings.warn(f"MatMul8bitLt: inputs will be cast from {A.dtype} to float16 during quantization")
cuBLAS API failed with status 15
A: torch.Size([1376, 5120]), B: torch.Size([5120, 5120]), C: (1376, 5120); (lda, ldb, ldc): (c_int(44032), c_int(163840), c_int(44032)); (m, n, k): (c_int(1376), c_int(5120), c_int(5120))
wandb: Waiting for W&B process to finish... (failed 1).
error detectedwandb: You can sync this run to the cloud by running:
wandb: wandb sync /tmp/wandb/offline-run-20230622_125830-qgbnsfzk
wandb: Find logs at: /tmp/wandb/offline-run-20230622_125830-qgbnsfzk/logs
Traceback (most recent call last):
File "/usr/lib64/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib64/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/datafile/python_projects/alpaca-lora-13b/train.py", line 274, in <module>
train(**vars(args))
File "/datafile/python_projects/alpaca-lora-13b/train.py", line 256, in train
trainer.train(checkpoint)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/trainer.py", line 1661, in train
return inner_training_loop(
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/trainer.py", line 1946, in _inner_training_loop
tr_loss_step = self.training_step(model, inputs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/trainer.py", line 2753, in training_step
loss = self.compute_loss(model, inputs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/trainer.py", line 2778, in compute_loss
outputs = model(**inputs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/utils/operations.py", line 521, in forward
return model_forward(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/utils/operations.py", line 509, in call
return convert_to_fp32(self.model_forward(*args, **kwargs))
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/amp/autocast_mode.py", line 14, in decorate_autocast
return func(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/peft/peft_model.py", line 705, in forward
return self.base_model(
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = old_forward(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 688, in forward
outputs = self.model(
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = old_forward(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 570, in forward
layer_outputs = torch.utils.checkpoint.checkpoint(
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/utils/checkpoint.py", line 249, in checkpoint
return CheckpointFunction.apply(function, preserve, *args)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/autograd/function.py", line 506, in apply
return super().apply(args, *kwargs) # type: ignore[misc]
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/utils/checkpoint.py", line 107, in forward
outputs = run_function(*args)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 566, in custom_forward
return module(*inputs, output_attentions, None)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = old_forward(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 292, in forward
hidden_states, self_attn_weights, present_key_value = self.self_attn(
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/accelerate/hooks.py", line 165, in new_forward
output = old_forward(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/transformers/models/llama/modeling_llama.py", line 194, in forward
query_states = self.q_proj(hidden_states).view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(args, *kwargs)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/peft/tuners/lora.py", line 751, in forward
result = super().forward(x)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/nn/modules.py", line 388, in forward
out = bnb.matmul(x, self.weight, bias=self.bias, state=self.state)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/autograd/_functions.py", line 559, in matmul
return MatMul8bitLt.apply(A, B, out, bias, state)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/torch/autograd/function.py", line 506, in apply
return super().apply(args, *kwargs) # type: ignore[misc]
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/autograd/_functions.py", line 397, in forward
out32, Sout32 = F.igemmlt(C32A, state.CxB, SA, state.SB)
File "/datafile/python_projects/alpaca-lora-main/.venv/lib64/python3.8/site-packages/bitsandbytes/functional.py", line 1781, in igemmlt
raise Exception('cublasLt ran into an error!')
Exception: cublasLt ran into an error!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.