Как стать автором
Обновить

Комментарии 34

Отличная идея. Главное, потом не удивляться, что знакомые как-то не так косятся, а то и товарищ майор в дверь постучит.

Конечно идея не супер уникальная (после написания статьи оказалось, что есть работы с обучением клонов на диалогах из мессенжеров, упомянул в начале), но спасибо за фидбек

Полагаю, что вопрос не в уникальности, а в том, что бот в ответах «нагаллюционирует» рано или поздно.

Ответ на первую часть комментария

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

как вы назвали "юзерботы" - я совсем не это имел ввиду, прочтите заново

Вы это и имели ввиду. Загуглите что такое "юзерботы"

Как бы не получилось как в South Park 2604. Deep Learning

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

Спасибо, хорошая идея

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

А если приделать и камеру, то в итоге может получится (ну почти) полное копие сознания.

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

Тогда уж проще просканировать мозг и выдернуть 100 трлн связей. Ну и можно грузить в Майнкрафт

Немного оффтоп: на просторах твича существует AI стример Neuro-sama. Буквально несколько дней назад, её создатель Vedal провёл стрим с обновлённой, улучшенной версией. Получилось очень интересно, советую всем посмотреть стрим целиком (стрим на английском языке) или нарезки из него на ютубе, потому что Neuro-sama это одна из лучших попыток создания виртуальной личности, которую я видел.

Блин а это круто, я даже зарегистрировалась на habr, чтобы поддержать автора и написать комментарий!

Спасибо, приятно:)

нет данных, попадающих под NDA.

А у кого с кем в этом случае соглашение?

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

У меня почему-то в коллабе обученный бот генерит повторяющийся диалог на несколько строчек. Так должно быть?
User: Как дела? Clone: Хорошо, вышли на улицу. User: Хорошо. Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User:

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

Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User:

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

откуда она (модель) понимает, что это диалог.

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

что значит модель не понимает что это диалог? Модель учится на серии диалогов “user: text, clone: text”, начинает отвечать также, так работает файнтюниг. Он не видит никаких других имен. Как я уже сказал до этого, чего точно не хватает в подготовке данных, так это добавление eos токенов в конце диалогов

вы модели выдаете вот такую "простыню" :

User: Как дела? Clone: Хорошо, вышли на улицу. User: Хорошо. Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо. User: Я сейчас в машине, поеду к тебе. Clone: Хорошо ........

Как она поймет, что это диалог, что кто то отвечает кому-то?

для нее это просто сплошной набор токенов, где User и Clone просто обычные токены.

Посмотрите набор инструкций для файнтюнинга chatGPT. Там четко структурированный файл, где каждый вопрос и ответ отдельной позицией сделан. Указано, где вопрос, где ответ. А вы просто скормили plane text, Она вам plane text-ом и отвечает

По другому вопрос. Откуда модель знает что после "Clone:" это ее (модели) ответ, а после User: это как бы ей вопрос.

ну либо я вас концептуально не понял

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

и еще замечание: у меня совсем другой формат выгрузки JSON из телеграма (ваших ключей ("chat", "list") там нет )

def process_chats(file_path: str):

    with open(file_path, encoding='utf-8') as f:

    # Load the JSON data from the file

        data = json.load(f)

    messages = []

    for row in data["messages"]:

        # for row in sample["messages"]:

            if row["text"] != '':

                username = row['from']

            if username != "Vldmr":

                username = "User"

            if username == "Vldmr":

                username = "Clone"

            message = f"{username}: {row['text']}"

            messages.append(message)

    return messages

.

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

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

Как выглядят данные из телеги:

User: как дела? \n

# ответ модели

\nClone: пойдет

Модели скармливаем user: Ваш вопрос, далее она генерирует все остальное, и должна останавливаться после генерации ответа. Об этом я уже говорил

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

Давно крутится идея создания своего клона, но больше всего меня напрягал факт, что бот может обучиться на "чувствительных" данных, которые я бы выдал одному человеку, но не выдал другому. И надо ли искать максимально рафинированные диалоги, либо обучать вручную. Что то, что то достаточно трудоёмко(

Получаю ошибку при запуске: No GPU found. A GPU is needed for quantization.
Видеокарта со свежими драйверами, конечно же есть.

эх... почему-то ловлю ошибку во время тренировки: "ValueError: Attention mask should be of size (2, 1, 91, 182), but is torch.Size([2, 1, 91, 91])"

так а сколько оценочно ждать надо пока обучиться? сколько у вас заняло времени и на каком железе?

на Colab у меня 15 минут обучалась. На своем железе не смог запустить, т.к. на винде эта схема не работает

Кто-нибудь уже писал про Чёрное зеркало?)

Это же прям первый эпизод второго сезона, "Скоро вернусь" называется.

Его сняли 10 лет назад...

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий