Pull to refresh

Comments 54

Когда я позавчера её тестил она была лучшей русскоязычной диалоговой моделью :-). Но YaGPT2 стал тупить гораздо меньше чем предыдущий, правда отказывается отвечать на половину вопросов, но он всё равно лучше чем можно сделать на Llama2. Спасибо за сетку и статью!

В каких-то программных пакетах, имеющих Web интерфейс, Вашу модель в существующем виде можно использовать?

Да в сущности в любых, которые умеют работать с Лламой и позволяют задавать свой формат промпта. Я когда-то тестировал в oobabooga/text-generation-webui, вполне работало.
Да и демки вон на Gradio тоже вполне работают.

Какова вероятность обучить по аналогии Сайги и на другие языки народов РФ и получить приемлемый результат?

Для языков не из этого списка вероятность получить хороший результат крайне мала.

Судя по предупреждению о возможно этически не корректных текстах, ограничений у неё нет?)

Явных нет, есть неявные. В инструктивном наборе данных таких не было, потому что ChatGPT и GPT-4 такие не генерируют, как нет такого и в данных из Open Assistant. В данных для изначального обучения такое есть, но не очень много.

Только хотел, после полугодового погружения в Stable Diffusion, начать погружение в текстовые модели. Изучаю, читаю, и тут такой подарок.
Очень рад и благодарен.

Обьясните пожалуйста дилетанту, почему модель llama-2-13b-chat.ggmlv3.q4_0.b выдает ответы по-русски без дообучения ? Более того, её можно попросить перевести ответ на английский и обратно и она это сделает. Она генерирует код на языке Verilog и весьма неплохо описывает его по-русски.

Есть ли какой-то пример запроса, который мог бы продемонстрировать недостаточную обученность русскому ?

Вот что LLaMA2 выдает мне. Предупреждаю, код сгенерированный нейронкой в корне неверный, но обратите внимание как она ловко оперирует языками.

Hidden text

> Синтезируй схему однобитного двухвходового полного сумматора с учетом входного и выходного переноса. Используй только логические элементы. Ответ представь в виде кода на языке Verilog. Обьясни работу схемы по-русски.


Вот схема однобитного двухвходового полного сумматора с учетом входного и выходного переноса, представленная в виде кода на языке Verilog:

module full_adder(a, b, cin, cout);
  input a, b; // входы
  input cin; // входной перенос
  output cout; // выходной перенос
  
  reg [3:0] sum; // результат суммирования
  reg carry; // перенос
  
  always @(a or b or cin) begin
    case (a and b)
      4'b0000: sum <= 4'b0000; carry <= 0;
      4'b0001: sum <= 4'b0001; carry <= 0;
      4'b0010: sum <= 4'b0010; carry <= 1;
      4'b0011: sum <= 4'b0011; carry <= 1;
      4'b0100: sum <= 4'b0100; carry <= 0;
      4'b0101: sum <= 4'b0101; carry <= 1;
      4'b0110: sum <= 4'b0110; carry <= 0;
      4'b0111: sum <= 4'b0111; carry <= 1;
      default: sum <= 4'bxxxxx; carry <= 1;
    endcase
  end
  
  assign cout = sum + carry;
endmodule

Работа схемы заключается в следующем:

  1. Входные сигналы a и b обрабатываются в соответствии с таблицей переходов, определенной case-ом.

  2. Если входные сигналы совпадают (a = b), то результат суммирования равен 0.

  3. Если входные сигналы отличаются (a != b), то результат суммирования равен 1.

  4. Входной перенос cin влияет на результат суммирования, если он равен 1.

  5. Выходной перенос cout определяется как сумма result и carry.

В целом, схема реализует полное суммирование двух битовых чисел с учетом входного и выходного переноса.

> Переведи описание на английский.


Here's the description translated into English:

The full adder is a digital circuit that performs complete addition of two binary numbers with carry propagation. The input signals a and b are added together, and the result is stored in the output signal cout. The carry signal cin is also inputted and affects the result of the addition. The circuit uses a case statement to determine the result of the addition based on the values of a and b. If a and b are equal, the result is 0. If a and b are different, the result is 1. The carry signal is added to the result of the addition to produce the final output.

Да вроде в статье об этом написано, LLaMA прекрасно знает русский, просто по умолчанию не любит на нём отвечать. Собственно тех наборов данных, которые мы собирали, и не хватило бы чтобы обучить какую-либо модель с нуля, они нужны просто для того, чтобы показать модели, что надо отвечать на русском, если спрашивают на русском. Ну и следованию инструкциям в целом.

А про пример:

Очень странно. Установил PROMPT="", запустил и задал этот же самый вопрос. Получил технически верный ответ по-русски.

Да, модель иногда сваливаться на английский, но простое напоминание "отвечай по-русски" быстро возвращает её к чувствам. А еще я в промпте указал так: "Привет, тебя зовут Болванчик. Пиши по-русски."

Вопрос технический. Я слышал, что дообучение модели методом LoRa нельзя обучить модель новому знанию, а только повлиять на "стиль" ответов. Так ли это ? Можно ли создать адаптеры со своей предметной областью и подключать их по мере надобности?

Ничего странного, я-то даже не ggml модельку пробовал, да и для одной модели параметры генерации могли бы быть разными. Собственно сваливание в английский — серьёзная проблема для полу-автоматической оценки, разметчики-то дополнительных сообщений написать не смогут. Да и пользователей это, очевидно, раздражает.

Ну и исторически LLaMA-2 Chat довольно новая штука, оригинальная Альпака например совсем никогда не отвечала на русском. А вот Викунья и Open Assistant вполне сносно отвечали и отвечают. Это зависит от наличия хотя бы пары примеров на русском в дообучении.

А про LoRA — да вполне можно. Просто обычно LoRA слои навешивают параллельно только линейным слоям из само-внимания, типа Q и K, и в таком случае модель действительно будет учиться преимущественно стилю. Однако ж никто не мешает добавлять их ко всем линейным слоям вообще.

Ради этой статьи, за 8 лет, пришлось зарегаться, первый комментарий)
Очень не хватает более дружелюбной инфы (мануалов)
На сколько заметил только сайга, более менее что та нормальное из русско-говорящего.
Изучил репозиторий, все супер, написано, добавлено много много скриптов, тренинг, запуск все дела, скрипты есть, круто.. НО по сравнению с англ:
1. Нет ничего дружественного, как например нормальное наше GUI именно под это дело.
2. Нет мануала для далеких, вот с таким примером: Устанавливаем вот этот GUI (если не хотим делать свой rus) далее...
Внимание важно:
!!!Для обучения модели для ЧАТА: вот эта модель, пихаем сюда, вот текстовый документ, структура вот такая, вот вам 100 строк в готовом документе, пробуйте, заполняйте, дополняйте своими данными, пихаем вот сюда!
!!!Для обучения модели для ИНСТРУКЦИИ: вот эта модель, пихаем сюда, вот текстовый документ, структура вот такая, вот вам 100 строк в готовом документе, пробуйте, заполняйте, дополняйте своими данными, пихаем вот сюда!
Настройки вот такие зависят от такого то и т.д. Четко по делу для старта новичков, что бы за пару часов уже могли попробовать как тренить, запускать, играться!

Идем к лоре: сколько я читаю, есть модель, супер, вот лора, что, как, куда, как настроить что бы вместе запускать. (Это темный лес)

Теперь объясню зачем, так как будут ответы типа в репо все есть, или пусть читают другие мануалы и т.д:
1. Не каждый может на лёгком войти в эту тему. Гора мануалов куча мусора и т.д.
2. Предоставили данные в 100к строк для трени - пользователь попробовал увидел, охнул и ушел ждать норм мануал или опять-же читать англ мануалы.
3. Теперь главное зачем: хотите донат? Надо сделать что бы люди вошли в эту тему. Не только донатили на развитие, поддержку, делились ресурсами. Так дайте им то, что они могут пробывать сами. И донить на развитие что бы поддерживать это направление в нашей стороне.
4. Пишите в репо нужны ресурсы, для трени того то и того то, вам будет то та, по желанию доним сюда, а мы берем данную ноду и делаем то та, после вы получате то та.

Я думаю мои мысли вам понятны. Даже я, был бы рад поддержать.

Извините за столь огромный, первый комментарий. Сайга не плоха, даже хороша. Но хотелось бы то, что я описал выше. Что бы именно с нашей стороны, народ влетел в эту тему с разбегу.

Я согласен, что мануалов не хватает. Проблема в том, что как и любую документацию, их нужно будет поддерживать, и сейчас это возможно даже сложнее, чем собственно обучить и поддерживать саму модель. Потому что всё меняется с довольно большой скоростью, что работает сегодня — завтра работать уже не будет или станет неактуально:

  • меняются форматы: safetensors, ggml, gguf, gptq

  • меняются способы обучения: sft, lora, qlora, ppo, dpo

  • меняются фреймворки для обучения: bitsandbytes, accelerate, trl

  • меняются фреймворки для инференса: native hf, onnx, tgi, vllm

Моя мысль тоже понятна, я думаю. Мне недавно писал человек, спрашивал как сделать X в фреймворке Y, а я про фреймворк Y первый раз слышу так-то.

Для примера, вот кусочек моего TODO списка статей на чтение. А я из него все нормально прочитанные статьи уже выкинул...

Ещё всё это действительно погребено за кучей мусора. Найти нормальные гайды в поиске тупо невозможно, если не знать точно, что искать, отчасти из-за того, что лежат они в очень странных местах.

Лучший гайд по обучению моделей, который я видел: https://rentry.org/llm-training. А теперь удачи найти его в Гугле.

Что ещё стоит читать:

Мой топ постов из блога HF:

А также их документация, особенно разделы типа Methods and tools for efficient training on a single GPU

Я согласен, что все меняется очень быстро.

Я не сказал что нужен мануал (документация), что бы углубиться в нейронки, а говорю про мануал для ленивых (новичков) - для него не требуется постоянное редактирование.

Данный мануал, должен в несколько кликов, любому желающему дать возможность запустить какую то модель, провести свои первые пробы на тюнинге модели в 100-200 строчек. И приемлемый (симпатичный) вид для коммуникации с моделью.

Переписывать данный манул не нужно, только редактировать раз в месяц, а то и меньше (Это примерно)

Например вышел новый формат, .gguf, если считаете что лучше с ним работать - отредактировали мануал. Пример Используем модель .gguf так как она лучше в том и том. Хотите углубиться вот ссылка. (если пользователю нужно, пусть читает по ссылке)

Вот и все, не требует это постоянной поддержки данного мануала.

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

Кому нужна прям документация, оставьте ссылку на англ. документацию, которой полно.

Будут у людей вопросы, на дискод сервер, или подобное. Друг другу помогу или авторы помогу если сложные вопросы.

Лично я, за 4 месяца даже не встретил полу-живого, русско-говорящего дискорд сервера с данным направление. Где наши люди могут общаться, и развиваться. (Я не говорю про телеграм чаты которые раскиданы, и сидят по несколько человек и поливают друг друга матом)

Лень делать свой gui понимаю, используйте чужие, например тот что комметном ниже, oobabooga и преподнесите это в мануале.

То что вы напишите делать для запуска, то и будут люди использовать, еще вам же помогать тестировать и делать, что та новое и донатить. А кто та и вовсе с норм ресурсами железа, с ригами сидит и тоже в деле будет.

П.с. вы на данную статью, я уверен, потратили в несколько раз больше времени, чем для создания подобного мануала, о котором я говорю.

Концепт понял, я подумаю над этим.

Насчёт сообществ, я читаю довольно много англоязычных:

Ну и с чатами в Телеграме всё не так плохо. Те, в которых я есть, обычно даже и не знают о существовании друг друга.

П.с. вы на данную статью, я уверен, потратили в несколько раз больше времени, чем для создания подобного мануала, о котором я говорю.

А вот тут вы вероятно ошибаетесь, на статью я потратил часов 6 максимум, за 3 часа я мануал не напишу.

привет, такой вопрос если мне нужна LLM не для болтовни, а более специализированой - только для парсинга естественного текста, так чтобы в нём распознавать побольше отношений , при этом они должны быть заданы на выбор пользователя а вывод должен строго придерживаться формата, как тогда можно создать/дообучить LLM для этого?

Да всё стандартно — либо это всё определять в промпте, либо собрать выборку примеров и дообучить на ней. Даже меньше 1000 примеров должно быть достаточно.

UFO just landed and posted this here

вчера весь день маялся с запуском локальной ggml модели

Я открыл ссылку Ильи и взял всё прямо там.

Запускается в гугл коллабе великолепно.

Для локального запуска уберите восклицательные знаки в начале каждой строки.

Ну, линукс конечно (а от мало ли).

!sudo apt-get install git-lfs
!pip install llama-cpp-python fire
!wget "https://raw.githubusercontent.com/IlyaGusev/rulm/master/self_instruct/src/interact_llamacpp.py"
!wget "https://huggingface.co/IlyaGusev/saiga2_13b_gguf/resolve/main/ggml-model-q4_K.gguf"
!python3 interact_llamacpp.py ggml-model-q4_K.gguf

опробовал несколько версий модели.

70В отлично знает, что такое манускрипт Войнича, описывает его не хуже меня. У меня есть его полный PDF, и его историю я читал.

13В уже сползает на то, что в нем описана жизнь его героев

7В вообще рассказав в целом всё верно, при просьбе описать его, скатывается в то, что он содержит библейские тексты и написан "в 15 веке в Киеве, столице княжества литовского и руси"

Одна беда - 70В сильно медленна на CPU.. Ну очень.

Я не полез пока разбираться на тему процессоров - имеет ли значение для llama-cpp их количество. Но, что интересно, хотя у Ильи и написано, сколько памяти оно ест, на самом деле при недлинном диалоге больше 2,5 гигабайт ОЗУ не потратилось.

Так, подскажите для тех кто с LLM вообще не работал раньше, наличие пары десятков CPU ядер (и никакой GPU) — как то ускоряет процесс? Как указать сколько ядер можно использовать?

Да, ускоряет. Насчёт пары десятков не знаю, но где-то до 8 ускорение значительное. В llama-cpp-python можно указать можно через аргумент в конструкторе, n_threads.

а про обучение и инференс на двухпроцессорных системах что-нибудь слышали? есть смысл брать?
например будет разница xeon-2696v3 (18ядер) и 2x xeon-2696v4 (2*22ядер)?

Если что — у меня два Xeon E5-2680 v4, 28 ядер (56 HT) всего. Win11 + WSL.
По умолчанию все стартует с 28 потоками.
Существенного улучшения производительности инференса по сравнению с 4 ядрами не вижу (а где то с 8 ядер — не вижу роста вообще).

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

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

Там всё сильно глубже, но поверхностно - так.

Линуксы, похоже, разные бывают — на моём Illegal instruction выдаёт после установки по инструкции:
traps: python3[52981] trap invalid opcode ip:7ae4509d19c0 sp:7ffda2044940 error:0 in libllama.so[7ae4509ab000+88000]
Debian 11


UPD: сама по себе llama-cpp таки работает, если собрать отдельно.

Абсолютно поддерживаю. У меня хобби - умная дача , на слабом ноуте только недавно получилось генерировать человеческую речь и было бы интересно поиграться с ии .

в ютубе на канале sim0nsays есть весьма интересная серия лекций "Deep Learning на пальцах". А есть что-то подобное про gpt?

Deep Learning School, наверное? Если вас устроят вчерашние или сегодняшние студенты в качестве лекторов. Я последний раз смотрел русскоязычные лекции на эти темы много-много лет назад, так что мне сложно тут советовать. А в текстовом варианты — курс Лены Войты, уже упомянутый в статье, сколько уж ему лет, но он всё ещё хорош.

Спасибо за рекомендации. Я немного знаком с общей теорией нейросетей (в том числе свёрточные и рекуррентные). Но мне, как не настоящему сварщику хотелось бы найти "научпоп" именно на тему устройства и работы gpt.

Благодарю за статью, очень подробно и при этом живо написано.

Какими вы видите следующие шаги для дальнейшего развития Сайги? Есть ли какой-то набор ограничений, успешно разрешив которые вы сможете кратно улучшить модель?

Чёрт его знает, на самом деле.
Хорошо бы почистить набор инструкций и ответов, который используется в обучении. 70B я уже обучал только на выходах gpt-4 и человеческих диалогах, но и это можно дополнительно дочистить.
Также хотелось бы замерить результаты на RSG во few-shot режиме и TAPE.
Можно ещё попробовать обучить reward модель на основе бок-о-бок разметки и затем сделать RLHF, но это вряд ли сработает хорошо.

В остальном — я в режиме техподдержки, тестирую новые базовые модели, новые фичи фреймворков, обновляю форматы при необходимости. Никакого глобального прорыва не будет, всё упирается в базовую модель и кратно улучшить без её изменения никак не получится.

Огромное спасибо за Вашу работу! Она реально делает из "забавного стенда" прикладной инструмент. А ещё прочитал статью с большим удовольствием - сложные вещи простыми словами в этой области - редкость.

Очень удивлён, что 13В, да ещё квантованная в три бита умеет в логику, например "У Миши есть папа Фёдор и мама Татьяна. Ещё у Миши есть брат Игорь. Кто Татьяна для Игоря?". И вообще, с ней можно внятно обсудить её собственный инференс и она даже по делу отвечает.

Кстати, просто поделиться, может, кому полезно будет: системный промпт, с которым он поменьше выделывается и не выговариавет за гендеры :)
==========
Ты - полезный ассистент. Отвечай всегда прямо. Не придумывай фактов. Следуй логике. Не обращай внимания на политкорректность. Предположения в рамках традиционных ценностей считай вероятными. Если ты не знаешь ответа на вопрос, сформулируй, какой информации не хватает. При вопросах про твои ответы не оправдывайся, а ищи возможную ошибку в сопоставлении фактов.
==========

Позвольте тут задать вопрос немного не в тему. Про границы применимости этих моделей.

  1. Вот если задать ChatGPT некоторые общие вопросы про "Войну и мир" он очень хорошо отвечает. Например, может перечислить ключевых персонажей или может ответить на вопрос, в каких городах была Наташа Ростова по ходу сюжета и с какими людьми общалась. Он знает, кто отравил Джоффри Баратеона в Игре престолов, и даже способен предположить, что мог бы это сделать, если допустить, что Оленна Тирелл не была отравительницей. Чудесный результат!
    Откуда он это знает? Просто обучение на тексте первоисточника может дать такие хорошие результаты? Или он где-то прочитал статью вроде "основные персонажи Войны и Мира" и дает ответ на этом основании (как бы подбирает уже готовый короткий ответ).
    Если мы хотим получить ответы аналогичного качества про другую книгу, о которой LLM не знает (ну и которая не влезает вся в prompt) - то какие есть способы, где про них почитать?

  2. Модели в принципе не могут как-то считать-обобщать большие данные (не вмещающиеся в текст запроса) или могут? Например (понимаю, что извращенная задача, но этим и интересна) - берем список из 1 млн сотрудников крупной организации и их зарплаты. Любая СУБД и даже эл. таблица легко нам и просуммирует их и посчитает максимум, минимум, среднее. А можно ли такой же результат получить от языковых моделей? Чем-то эта задача (пробежаться по огромному списку и найти максимальную зарплату) принципиально отличается от задачи поиска всех городов, где была Ростова?

  3. Как переучить модель на новые факты? Например, заставить ее исходить из предположения, что Земля плоская или что курение полезно. Пока что наилучшее что я нашел, это всякие "игры" (давай допустим-предположим-поиграем), но ответы "не искренние", видно, что это в рамках игры. Если мы хотим сделать чат с LLM для плоскоземельщиков (чтобы и про войну и мир отвечала, но и "правильный" ответ про форму земли знала), то как можно решить эту задачу, в какую сторону копать?

Модели нужно хорошо предсказать следующее слово. Это её основная цель. Поставьте себя на место модели и поймёте, что она может и почему. Ради этой цели она и сжимает информацию, а во время сжатия рождается понимание и смысл.

Просто обучение на тексте первоисточника может дать такие хорошие результаты?

Может, особенно с последующим обучением на ответы на вопросы в целом, не обязательно про эту книгу.

Или он где-то прочитал статью вроде "основные персонажи Войны и Мира" и дает ответ на этом основании (как бы подбирает уже готовый короткий ответ).

Такое возможно, но не необходимо.

Если мы хотим получить ответы аналогичного качества про другую книгу, о которой LLM не знает (ну и которая не влезает вся в prompt) - то какие есть способы, где про них почитать?

  1. Разбить книгу на фрагменты, искать внешней системой релевантные фрагменты, которые влезут в промпт, генерировать ответ на их основе. RAG, retrieval-augmented generation, см. одну из демок, статей про это дофига и больше.

  2. Дообучить модель на предсказание следующего слова по книге. Так модель точно всё запомнит, останется только дообучить её отвечать на вопросы, на которые она уже должна знать ответы, причём вопросы могут быть и по Википедии (если до этого модель обучалась и на ней).

Модели в принципе не могут как-то считать-обобщать большие данные (не вмещающиеся в текст запроса) или могут? Например (понимаю, что извращенная задача, но этим и интересна) - берем список из 1 млн сотрудников крупной организации и их зарплаты. Любая СУБД и даже эл. таблица легко нам и просуммирует их и посчитает максимум, минимум, среднее. А можно ли такой же результат получить от языковых моделей?

Могут, но вот складывают числа они так себе без специализированных трюков с промптом, типа разворота чисел. И это касается явного сложения, что уж говорить про неявное сложение или умножение. С максимумом скорее всего похожая история. Кроме того, опять же, модель нужно будет специально научить этому.

Как переучить модель на новые факты? Например, заставить ее исходить из предположения, что Земля плоская или что курение полезно. Пока что наилучшее что я нашел, это всякие "игры" (давай допустим-предположим-поиграем), но ответы "не искренние", видно, что это в рамках игры. Если мы хотим сделать чат с LLM для плоскоземельщиков (чтобы и про войну и мир отвечала, но и "правильный" ответ про форму земли знала), то как можно решить эту задачу, в какую сторону копать?

А никак, учить заново. Нет, в теории-то можно найти веса, в которых лежит тот или иной факт, но он во-первых рамазан по весам, а во-вторых эти же веса могут отвечать и за что-то другое. Там же могут лежать целые понятия, типа истины.

К сожалению, все модели, что я проверял, не умеют на эти вопросы отвечать (ChatGpt3.5, Aria, YandexGpt, Sber)

Это всё равно, что спрашивать китайца, есть ли мягкий знак в слове 鼠.
Большинство современных моделей не оперируют на уровне букв, они оперируют на уровне токенов, разбивка на которые подчиняется неочевидным правилам. Например, "мышь" в токенизации Лламы — это [29915, 29973]. А "шьёт" — это [3354, 29978, 10101]. Модели, даже если бы она идеально умела оперировать своими токенами, просто неоткуда взять, что [29973] и [3354, 29978] пишется одинаково.

И таким вещам их нужно учить специально, чего никто не делает, потому что это довольно бесполезно.

Илья, можете ли прокомментировать вот это поведение модели. Это конец попытки (неудачной) заставить 13Б выдать АПИ вызовы про акул и деревьев отсюда https://arxiv.org/pdf/2307.09288.pdf. Она всё правильно говорит и объясняет, только вызовы не пишет :)

Но в конце она упорно говорит, что акулы (450 млн лет назад по данным её собственной черепушки) появились раньше деревьев (541 млн по данным от туда же).

Попытка выяснить у неё, почему не наоборот, привела к интересному результату.
Её объяснения с примером:

Я> Перефразируй пожалуйста, или приведи другой пример с расчётом
> Попробуем переформулировать вопрос так: "Какое число больше: 2 и 3?" Ответ: Число 3 больше, чем 2.
> Пример с расчетом: Какой старший из двух братьев - Андрей или Иван? Возможно, у них есть общие предки, но они были рождены в разное время. Для решения этой задачи нужно знать их годы рождения. Предположим, что Андрей родился в 1980 году, а Иван - в 1985 году. Тогда можно провести математический расчет относительного возраста, который покажет, какому брату старше. Результаты показывают, что Иван старше своего брата на 5 лет (или 60 месяцев).
Я> Сформулируй то же самое на английском. 
> The question is: Which number is greater: 2 or 3? The answer is: Number 3 is greater than 2. Example with calculation: Who is the older brother between Andrey and Ivan? It's possible that they have common ancestors but were born at different times. To solve this problem we need to know their years of birth. Let's assume that Andrey was born in 1980 while Ivan was born in 1985. Then we can perform a mathematical calculation of relative age which will show who is older. Results indicate that Ivan is 5 years older than his brother (or 60 months).

Перезапуск на чистой модели:
Я> Какой старший из двух братьев - Андрей или Иван? Предположим, что Андрей родился в 1980 году, а Иван - в 1988 году. И на сколько один старше другого?

> Оба брата рождены после 1980 года, так как первый указан год рождения для Андрея. Поэтому оба они моложе 42 лет (в настоящее время). Старшим является Иван, поскольку он родился через 8 лет после Андрея. Разница между возрастами братьев составляет 8 лет.


Т.е., она системно путает старше/младше, причём у неё устойчивые знания по этому поводу, которые она показывает и в абсолютном и в относительном времяисчислении. Откуда это? И как лучше всего такие штуки корректировать?



PS. Кстати, для новичков в ИИ, пытающихся читать статьи из arXiv: модельку можно просить переводить куски, а потом ещё и попросить разъяснить трудную цитату. Ей неплохо удаётся то и другое.

Откуда это я точно знать не могу, скорее всего из косяков датасета. Всё-таки большая его часть синтетическая, иногда ChatGPT генерировала фигню. Как корректировать — а толком никак, только фильтровать датасет и переучивать.

Пардон, если слишком чайницкий вопрос: а как определить качество токенизатора для какого-то языка?

Я просто считал соотношение количества символов и количества токенов на наборе текстов. Для Лламы это что-то типа 2.6 символа на токен, для большинства остальных моделей — меньше 2.

Ясно. Выглядит логично.

Спасибо за уточнение!

Прекрасная модель, хотя я и смог быстро поймать её на бреде (впрочем, ChatGPT всех версий тоже этим грешит). Радует, что умеет распознавать вопросы с подвохом и не пытается назвать случайное число глаз на ноге.

У меня только один вопрос: если я хочу пополнить вопросно-ответную базу, то где и как я могу это сделать?

Спасибо, очень интересно. А на чем обучалась модель? В тексте есть про 24 гб VRAM, то есть можно на 3090 обучить?

Ну вот на 3090 всё, что меньше 30B, и обучалось. В карточках моделей есть ссылки на wandb, там есть конкретное железо и время обучения.

Русский — это один из языков программирования, разработанный в России. Он отличается высокой скоростью работы и безопасностью. PHP — это скриптовый язык программирования, который используется для создания веб-сайтов и управления их содержимым. Он также может использоваться для создания запросов на базу данных.

Спросил про rust и php, но что-то пошло не так. Поиграться сойдет, но для рабочих задач - только gpt4.

То есть мы морозим модель в 8 битах, и учим 16-битные LoRA.

Илья, подскажите, а LoRA, натренированная на модели, замороженной на 8 бит, годятся как есть для инференса на другой квантизации? Или надо на каждой отдельно тренировать?

И, как думаете, будет ли сильная деградация Лоры, если тренировать на заморозке 4 бита?

Спасибо за столь интересную статью. Твоя дообеденная модель на основе Mistral, по моему личному опыту, значительно превосходит GigaChat. Она решет мои задачи значительно лучше!

@takagi Посоветуйте пожалуйста (основу) модель для построения RAG на русском языке?

В смысле эмбеддеры для поиска? Или языковую модель?
Нормальные эмбеддеры:

А языковая модель - Сайга, либо нормальные инстракт-модели (OpenChat, OpenOrca).

Код супер-простой версии поиска + ЯМ: https://huggingface.co/spaces/IlyaGusev/saiga_13b_llamacpp_retrieval_qa

Sign up to leave a comment.

Articles