hum@ – Whirling In Melancholy
Мне пришла максимально ебанутая идея в голову где-то месяц назад, с тех пор я пытаюсь её осуществить. Тщетно, конечно, но может кто-то более умный найдет это и сможет реализовать. Идея в чем - зафайнтюнить ЛЛМ так, чтоб ответы были в стиле навыков из игры. Самое сложное было создать датасет. Изначально вытащила все диалоги из игры, благо это несложно, однако все это выглядело так:
Вручную искать каждую реплику почти невозможно, а чатгпт и дипсик предложили искать по определенным словам, что, очевидно, не даст нужного результата. Я попыталась пару ночей выцепить хотя бы пару сотен реплик, но нет. Второй вариант более простой - мне попался в рекомендациях канал со всеми репликами персонажей.
И в аудио. Но с этим нет проблем ведь, существует прекрасная штуковина - WhisperDesktop, а модель large-v3 даже влезает в мои восемь гигабут видеопамяти. На транскрипцию этого видео ушло примерно пять минут. Результат хороший:
DeepL бесплатно не позволяет переводить такие файлы, поэтому пришлось использовать локальную альтернативу.
Перевод получился такой себе (DeepL показал себя чуточку лучше), поэтому очевидно нужны были правки. Много правок. Очень. Хочу напомнить, что навыков много, а на правки одной только Эмпатии у меня ушло еще несколько ночей. При этом пришлось сверять стиль выискивая фразы из локализации (иногда перевод был вообще другим), что добавляло трудностей. На этом моменте решила остановиться пока что на Эмпатии.
Вот у меня есть текстовый файл с кучей реплик Эмпатии. Что дальше? А дальше есть несколько путей, но большая часть откидывается из-за технических ограничений в виде моей ЭРТЭИКС 3070. Самый простой и ужасный вариант - промт. Просто подробно с кучей этих реплик расписать ЛЛМ (а из-за 3070 это не совсем лардж, так как всего 7b параметров) кто она и что должна делать. Результат ужасен. Примерно такая же хрень существует в GPT4ALL, где есть такая штуковина как LocalDocs, в которую можно запихать эти реплики. Результат очевиден.
Так как именно файнтюном хотя бы 7b моделей я занимать не могу, остается один вариант - лора. В конечном итоге это и правда оказалось лучшим для меня вариантом, но есть несколько но и о них позже.
Создание датасета для лоры то еще мучение, которое заняло еще больше бессонных ночей. Вот пример, где инструкция - запрос пользователя (вопрос), а аутпут - ответ. Важно отметить, что ответы не будут именно такими, он как и с лорами для генерации картинок, очень грубо выражаясь, берет стиль.
Только если для создания лоры для SD1.5/Pony (что у меня успешно получалось) нужно не очень много данных и времени (~10-15 картинок, вписать позитивные и негативные промты и подождать часик), то это пиздец. Для каждой фразы в идеале вписать несколько инструкций (еще раз напомню, много личностей с кучей фраз), плюс приходилось местами править аутпут, так как бессонные ночи и невнимательность идут под ручку вместе.
Настало время обучения лоры. Axolotl показался мне самым простым и приятным вариантом. Так оно и оказалось. Модель была выбрана Mistral-7B. Умолчу о некоторых проблемах на этих этапах, диспсик мне очень помог с их решением. В коде выше можно заметить, что есть несколько вариантов - Эмпатия, Драма и Электрохимия, но изначально решила протестировать только на Драме, так как из готовых (прям готовых) датасетов у меня была только она, плюсом там было меньше всего текста. Не без инцидентов, не без помощи опять же дипсика и не с первого раза, но получилось. Хоть и не очень хорошо, ведь модель всего 7b. Доработав еще два датасета возникла очевидная проблема - нехватка видеопамяти. На этом и закончила. Вот и вся история.
Лучше бы чему-то научилась за этот месяц или нашла нормальную работу, а то пиздец полный.