Pull to refresh

Comments 9

Весит модель более 500 Мбайт ... поэтому обучал на ... GPU T4 х2

2x16Gb VRAM, сколько у вас обучающих данных было, сама же сетка спокойно влезет в гиг vram? какое потребление памяти было? рассматриваю вариант покупки десктопных gpu (пара 4060ti 16Gb) интересно, какой максимальный размер llm можно будет тюнить на таком железе чтобы производительность значительно была выше cpu?

Загруженная на gpu модель и состояние оптимайзера занимал 2.7 Гб на первом gpu. Предполагаю, что это не только веса, но и статистика оптимайзера.

При обучении всей модели kaggle показывал что первый gpu загружен на 11-12 Гб. Тут играет роль размер батча - 8. Мы одновременно обрабатываем 8 примеров за раз на gpu. Больший размер батча приводил к Out of memory (если бы можно было, я бы поставил больше). Т.е. сам по себе кол-во обучающих данных роли не играет.

Второй gpu всегда был пустой, т.к. разделение модели на 2 gpu требует определенных действий. Я пока не стал это делать. В целом размер батча (8 семплов) меня устраивал.

По поводу файнтюна LLM сложные вопросы. LLM обычно огромные. В labse 130 млн. весов, в приличной LLM 7 млрд. весов (mistral, openchat). Файнтюнить надо будет через PEFT с квантованием или еще как то. Область интересная, но сложная. Мне понравилась вот эта статья Ильи Гусева и код обучения.

qlora вполне позволяет файнтюнить LLM за приличное время/деньги, хотя и с квантизацией и некоторой потерей в перплексии.

Спасибо за статью, очень вдохновляюще.

В какой точности обучали сеть? fp16 или fp32?

Отлично, я как раз хотел показать, что нейросети стали ближе к нам, к бизнес задачам

Все слои были в torch.float32. Т.к. сеть маленькая (130 млн. весов), то с этим не заморачивался. Насколько я знаю перевести сеть на torch.float16 не так, чтобы совсем просто... обычно эти вопросы возникают с LLM

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

е5 вроде как один из лучших сейчас (ссылка), хотя я обычно использую его мультиязычную версию (intfloat/e5-large-v2)

еще можно смотреть рейтинг на huggingface (ссылка)

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

2) Запихиваем куски в векторную БД, например Chroma.

3) Дообучаем языковую модель спрашивать вопросы и маркировать их.

4) На спрошеный вопрос прогоняем его через cross-encoder и ищем ближайшие к нему ответы в базе.

5) Подсовываем ответы в промпт модели

6) ??????

7) Profit.

кросс энкодер помогает только на шаге 4. Остальное - классический RAG пайплайн, о нем много пишут на хабре, можно посмотреть.
Причем в БД может быть много кусков, поэтому сначала надо использовать быстрый би-энкодер. А потом уже когда кусков мало, можно использовать точный и медленный кросс энкодер.

Sign up to leave a comment.

Articles