Комментарии 34
Отличная идея. Главное, потом не удивляться, что знакомые как-то не так косятся, а то и товарищ майор в дверь постучит.
Конечно идея не супер уникальная (после написания статьи оказалось, что есть работы с обучением клонов на диалогах из мессенжеров, упомянул в начале), но спасибо за фидбек
типичные боты в телеграме не замена в данном случае, тут нужно делать настоящего хардкорного бота, который будет представляться телеграмом, эмулировать клиентское приложение
Библиотеки для создания юзерботов Whatsapp и Telegram к вашим услугам
Как бы не получилось как в South Park 2604. Deep Learning
ну идея классная на самом деле, как по мне наиболее качественно можно обучить коммерческого бота продажника, если есть данные хорошие, где была закрыта сделка, а где нет, что бы бот использовал нужные фразы...будущее уже рядом)
А лучше взять микрофон и обучать модель на все ваши разговоры в жизни. Так получится ваш полный двойник с которым ваши дети смогут поговорить когда вы умрете.
А если приделать и камеру, то в итоге может получится (ну почти) полное копие сознания.
Но для этой цели надо сделать чтобы нейронка могла обучаться во время работы, а то получится двойник, но с синдромом Корсакова.
Немного оффтоп: на просторах твича существует AI стример Neuro-sama. Буквально несколько дней назад, её создатель Vedal провёл стрим с обновлённой, улучшенной версией. Получилось очень интересно, советую всем посмотреть стрим целиком (стрим на английском языке) или нарезки из него на ютубе, потому что Neuro-sama это одна из лучших попыток создания виртуальной личности, которую я видел.
Блин а это круто, я даже зарегистрировалась на habr, чтобы поддержать автора и написать комментарий!
нет данных, попадающих под NDA.
А у кого с кем в этом случае соглашение?
У меня почему-то в коллабе обученный бот генерит повторяющийся диалог на несколько строчек. Так должно быть?User: Как дела?
Clone: Хорошо, вышли на улицу.
User: Хорошо. Я сейчас в машине, поеду к тебе.
Clone: Хорошо.
User: Я сейчас в машине, поеду к тебе.
Clone: Хорошо.
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])"
так а сколько оценочно ждать надо пока обучиться? сколько у вас заняло времени и на каком железе?
Кто-нибудь уже писал про Чёрное зеркало?)
Это же прям первый эпизод второго сезона, "Скоро вернусь" называется.
Его сняли 10 лет назад...
А нет ли готового продукта, куда можно загрузить переписку с каким то человеком, а он бы сразу создал ник в телеграмме для общения с ним? А если нет, может сделать такой?
LLMClone: как клонировать себя в Telegram