Эта история началась в начале марта этого года. ChatGPT тогда был в самом расцвете. Мне в Telegram пришёл Саша Кукушкин, с которым мы знакомы довольно давно. Спросил, не занимаемся ли мы с Сашей Николичем языковыми моделями для русского языка, и как можно нам помочь.

Русская турбо-альпака
Русская турбо-альпака

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

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

Там я обнаружил вот эту картинку:

Масштабирование по Flan
Масштабирование по Flan

По этой картинке выходило, что с текущими базовыми моделями для русского нам ловить нечего. Самой большой именно русской моделью на тот момент была rugpt3large с 760 миллионами параметров, что соответствует самому началу этого графика. При этом существует другая известная картинка из поста OpenAI, из-за которой мы изначально всё это затевали:

Масштабирование по InstructGPT
Масштабирование по InstructGPT

Моделей с 760 миллионами параметров на ней вообще нет, а дообучение для всех размеров стабильно показывает хорошие результаты. А отличие тут в данных и в метрике. У Flan’а это автоматически сконвертированные наборы данных для различных NLP задач, а у OpenAI - ручная разметка. Кроме того, на картинке OpenAI оцениваются предпочтения пользователей, а на картинке Flan'а — реальные метрики на реальных задачах. Проблема тут вот какая...

На что ответ был:

Нам чертовски повезло. За 4 дня до этого вышла Альпака, которая по сути генерировала околочеловеческий инструктивный набор данных с помощью GPT-3. Мы решили сделать ровно то же самое, но на русском и с gpt-3.5-turbo вместо text-davinci-003 для удешевления процесса.

Сказано - сделано! Данные собрали быстро, за 4 дня. Ещё какое-то время ушло на оптимизацию обращений к API и добор до 30 тысяч примеров. После чего мы начали дообучать разные базовые модели. Начали с rugpt, xglm и mt0_xxl. Получалось приемлемо, но ничего особенного.

RuGPT-large. Последний вопрос там специально, потому что его гарантированно не могло быть в обучающей выборке из-за зацензуренности ChatGPT.
RuGPT-large. Последний вопрос там специально, потому что его гарантированно не могло быть в обучающей выборке из-за зацензуренности ChatGPT.

Модели мы выкладывали на HuggingFace по мере готовности, и нас начали спрашивать про дообучение LLaMA. У меня было довольно сильное мнение по этому поводу, я читал оригинальную статью и видел, что почти во всех частях обучающей выборки оставляли только английский, а остальные языки выфильтровывали. Единственное исключение — Википедия. Для неё оставили 20 языков с латиницей или кириллицей, в том числе и русский.

Казалось, за последние пару лет можно бы и отучиться прогнозировать что-либо.
Казалось, за последние пару лет можно бы и отучиться прогнозировать что-либо.

Надо ли говорить, что я был не прав.

И оно заработало! Заработало лучше, чем все существующие на тот момент русские базовые модели.

В этот момент история Сайги началась по-настоящему.

База

Языковая модель — это модель, которая предсказывает следующее слово по предыдущим. Или символ, или токен, то есть часть слова. Где-то до 2017 года самыми известными языковыми моделями были N-граммные, которые просто сохраняли, какие слова шли после каких, и считали вероятности на основе этого.

Не читали курс Лены Войты? Серьёзно, не читали? Ну так почитайте!
Не читали курс Лены Войты? Серьёзно, не читали? Ну так почитайте!

Были языковые модели и на основе рекуррентных сетей, и ваш покорный слуга их даже тогда использовал, но в прикладном аспекте N-граммные модели были всё ещё важнее. Использовались они в спеллчекерах и ASR для учёта контекста.

Конечно, можно сказать, что word2vec из 2013 тоже своего рода языковая модель, но тогда так никто особо не говорил.

В 2017 появились трансформеры, в 2018 появились GPT и BERT, и языковые модели стали основой всей области обработки естественных языков. В конце 2022 вышла ChatGPT, и языковые модели добрались до обывателя, а корпорации и учёные начали пытаться это повторить.

Модель

Было несколько вариантов базовых моделей. Во-первых, были древние маленькие модели Сбера: rugpt3medium и rugpt3large, у которых от GPT-3 одно название. Во-вторых, были многоязычные модели: xglm и mt0. Но в феврале вышла LLaMA. И она оказалась чертовски особенной.

Помните законы масштабирования, которые описаны в том числе здесь? Ллама опирается на законы Шиншиллы, законы Хоффмана, законы DeepMind, законы, по которым модели нужно скормить очень много токенов, чтобы стало хорошо. И на момент выхода она была в этом уникальна среди больших открытых языковых моделей.

И снова эта картинка здесь
И снова эта картинка здесь

У Лламы оказалась ещё одна очень важная особенность — годная разбивка на русские токены. Это неожиданно, учитывая что в её наборе данных из русского была только Википедия, что составляло меньше 1% данных. Я до сих пор не очень понимаю, была ли такая токенизация случайными стечением обстоятельств, или кто-то это специально продумал. До сих пор нет ни одной открытой многоязычной модели с токенизацией лучше, чем у Лламы. Кроме RWKV-4-World, конечно, но это всё ещё экзотика.

Синтетические наборы данных

В декабре 2022 года вышла статья про self-instruct. Она тоже уникальна — для неё авторами не нужны были GPU. Авторы вручную составили 175 образцовых инструкций и примеров их выполнения, и попросили GPT-3 сгенерировать похожих. И потом дообучили саму GPT-3 на этих инструкциях через API.

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

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

В марте 2023 появилась Альпака, стенфордский проект с той же идеей, что и self-instruct, но с дообучением не GPT-3, а LLaMA. По сути ребята вытащили стиль ответов из GPT-3 и перенесли его на открытую базовую модель.

Дистилляция через API — это гениально!
Дистилляция через API — это гениально!

И мы сделали то же самое, но для русского. Сделали это дешевле, потому что использовал уже доступный на тот момент gpt-3.5-turbo. И ещё прогнали каждое задание отдельным вызовом API. Получилось что-то вроде такого:

Из презентации к DataFest'у
Из презентации к DataFest'у

LoRA: Low-Rank Adaptation

Дообучение даже 7-миллиардной модели пару лет назад казалось не самой простой задачей, в основном из-за требований к VRAM. Эвристика тут такая: для 16-битных моделей нужно умножить количество миллиардов на 2, и получится примерно количество гигабайт, которое занимает эта модель. Для 7 миллиардов это 14Гб. Но кроме самой модели нужно хранить ещё и её градиенты и состояние оптимизатора, и мы вылезаем за типичные 24Гб VRAM.

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

Собственно последний вариант и называется LoRA, а вся совокупность методов — PEFT, parameter-efficient fine-tuning.

Это вся суть LoRA. Серьёзно, вся.
Это вся суть LoRA. Серьёзно, вся.

В нашем контексте LoRA позволяет сильно экономить на VRAM, потому что оригинальная модель заморожена, и по ней не нужно считать и хранить градиенты. LoRA сама по себе позволяет обучать 7-миллиардные модели в 16 битах на карточках с 24Гб VRAM.

Квантование

Но даже с LoRA обучение 13-миллиардной модели уже невозможно в 24Гб VRAM, однако же мы это много раз делали. А как так?

На самом деле, 16 бит точности — это избыточно. Большая часть весов обученной модели нормально распределена внутри своих слоёв, обычно недалеко нуля (см. Appendix F), и представлять числа типа 65504 нам не нужно. int8 вместо float16 более чем достаточно.

В августе 2022 вышла статья, которая называется LLM.int8. В ней авторы, в частности Тим Деттмерс, аккуратно посмотрели на проблемы квантования округлением к ближайшему целому. Оказывается, в активациях (не в весах!) сети есть выбросы, которые это самое квантование ломают. Ну и авторы сделали костыль под эти выбросы. О природе выбросов, кстати, не так давно были интересные споры.

Очень понятная схема из статьи
Очень понятная схема из статьи

Но что более важно, в отличие от авторов остальных сотен статьей про квантование, они интегрировали свой метод в HuggingFace Transformers, небезызвестную библиотеку, что позволило нам воспользоваться им в одну строчку. То есть мы морозим модель в 8 битах, и учим 16-битные LoRA.

Теперь эвристика ещё проще: количество миллиардов примерно равно количеству гигабайт. И 13-миллиардные модели обучаются в 24Гб с запасом.

Это всё только верхушка айсберга: есть gptq, есть qlora, есть упомянутые выше сотни статей про разные варианты квантований.

Запуск на CPU

Ещё одна непредставимая пару лет назад вещь — запуск 13-миллиардной модели на любом ноутбуке, а того гляди и на телефоне.

Есть такой человек, Георгий Герганов. Он написал библиотеку для инференса языковых моделей на Си, ggml (где gg, очевидно, его инициалы), а также одноименный формат сериализации моделей (который недавно стал gguf). На этой основе он сделал llama.cpp, специализированную библиотеку для инференса Лламы.

Собственно модели с HuggingFace можно перевести в этот формат и пользоваться ими на CPU с приличной скоростью инференса, чем мы активно и пользуемся. 2 из 3 наших активных демо используют именно ggml модели.

Кроме того, в ggml есть свои методы квантования, вплоть до нечестных 2 бит.

Результаты

Основных тестов два: сравнение бок о бок на 176 заданиях и RussianSuperGLUE.

Вместо тысячи слов
Вместо тысячи слов

Результаты бок о бок с ChatGPT-3.5, цифры означают победы-ничьи-поражения:

  • 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

Сравнения делались в Толоке, каждую пару ответов отсматривали 5 человек.

На RSG базовые Лламы не отличаются от Сайги, если их дообучать. Сама LLaMA-2 13B на 4 месте, после людей, ансамбля и Fred'а. Можно ещё смотреть на zero-shot и few-shot. У ChatGPT итоговая оценка 68.2% в zero-shot режиме, у 70-миллиардной Сайги — 64.3%.

Короче, 70-миллиардная Сайга вполне на уровне ChatGPT-3.5, но только использовать её не особо удобно, даже квантованную.

Есть несколько демо, где можно потрогать модели. Плачу я за них из своего кармана, поэтому большая часть из них на CPU:

Старая демка: "почему трава зелёная?"
Старая демка: "почему трава зелёная?"
Старая демка: извлечение json
Старая демка: извлечение json

Инструкции по запуску и обучению на своих машинах можно найти в репозитории и карточках моделей.

Современность

С первой версии поменялось много чего:

  • Модель теперь зовётся Сайгой

  • LLaMA стала второй

  • Добавилось много разных наборов данных: от меня, от OpenAssistant, от добрых людей

  • Разработчики ggml минимум три раза поменяли формат моделей

Суть же осталась той же: учим большую базовую модель отвечать на русском языке и выкладываем её в открытый доступ.

Появились ещё и модели от Яндекса и Сбера, YandexGPT и GigaChat. Первая получила сегодня вторую версию. По нашим замерам, которым возможно вообще не стоит верить, GigaChat лучше YandexGPT и на уровне ChatGPT. Лучше он как минимум потому, что не цензурирует значительную часть запросов. Ни одна из них не открыта, доступна только базовая 13-миллиардная модель Сбера.

Все наши модели и все ссылки можно найти в репозитории: IlyaGusev/rulm.

Доклад с Датафеста: видео, слайды. Ссылку на Телеграм-канал не дам, у меня его нет.

Комментарии (22)


  1. eigrad
    07.09.2023 12:10
    +3

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


  1. Komrus
    07.09.2023 12:10

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


    1. Takagi Автор
      07.09.2023 12:10

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


  1. AigizK
    07.09.2023 12:10

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


    1. Takagi Автор
      07.09.2023 12:10
      +1

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


  1. shadrap
    07.09.2023 12:10

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


    1. Takagi Автор
      07.09.2023 12:10

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


  1. a-cherepanov
    07.09.2023 12:10
    +1

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


  1. checkpoint
    07.09.2023 12:10

    Обьясните пожалуйста дилетанту, почему модель 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.


    1. Takagi Автор
      07.09.2023 12:10

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

      А про пример:


      1. checkpoint
        07.09.2023 12:10

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

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

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


        1. Takagi Автор
          07.09.2023 12:10

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

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

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


  1. AlexTrack
    07.09.2023 12:10
    +5

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

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

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

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

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


    1. Takagi Автор
      07.09.2023 12:10
      +10

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

      • меняются форматы: 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


      1. AlexTrack
        07.09.2023 12:10
        +1

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

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

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

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

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

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

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

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

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

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

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

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

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


        1. Takagi Автор
          07.09.2023 12:10

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

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

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

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

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


    1. diogen4212
      07.09.2023 12:10
      +1

      Можно попробовать взять готовый продукт (типа oobabooga/text-generation-webui), расковырять исходники и попытаться написать что-то своё или воспользоваться тем, что есть. Но без мануалов и систематизации материала от простого к сложному действительно тяжело (не сравнить, как я когда-то учил базы данных с нуля по книгам и нормальным видеокурсам часов по 20 от преподавателей)


      ...

      (вчера весь день маялся с запуском локальной ggml модели из файла, так ничего и не вышло, хотя готовые скрипты есть (правда, там предполагается скачивание модели с hugginface) и задача довольно простая для знатока, но есть дофига реализаций этого запуска и не все они работают с сжатыми моделями (либо работают, но у меня руки кривые, например иногда бывала ошибка памяти, а иногда нет). Плюс специфика Питона, где вообще не понятно, какой объект нужно формировать, и VSCode, который отказывается видеть некоторые импорты, и ошибка MemoryError, которая пропадает после перезагрузки Винды и смены среды анаконды.
      На работе работы нет и времени дофига свободного, могу себе позволить так развлекаться))


    1. port20031
      07.09.2023 12:10

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


  1. IvanPetrof
    07.09.2023 12:10

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


    1. Takagi Автор
      07.09.2023 12:10
      +1

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


      1. IvanPetrof
        07.09.2023 12:10
        +1

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


  1. cry_san
    07.09.2023 12:10