Tensor Banana
2.65K subscribers
523 photos
124 videos
111 links
Нейросети и всё такое. https://youtube.com/@tensorbanana
Чат по нейронкам: https://t.iss.one/+zFDiHuL1iVA1YWMy
Чат с ботами: https://t.iss.one/+m2TQ5VJLhIRiY2U6
Написать админу и донаты: @talkllamabot
Download Telegram
LLM в русском роулплее. Мои заметки

- Мои любимые LLM на сегодня: command-r-plus-104B (API), saiga-phi3-medium-14B.

- Командира-104 можно юзать бесплатно через официальный API от Cohere, например, в SillyTavern. Дают 1000 бесплатных генераций в месяц на один аккаунт. Цензуры почти нет, но законы лучше не нарушать. За обычное nsfw пока что не банят, хотя в TOS у них написано, что нельзя. Из РФ - нужен впн и гугл почта. API ключ берем тут и прописываем в таверну: https://dashboard.cohere.com/welcome/register

- chat-completion режим в таверне
Если будете использовать командира в таверне, то необходимо выбрать режим chat-completion / Cohere на второй вкладке. Поддержку этого бесплатного АПИ не так давно добавили в таверну 1.12.1.

По умолчанию в режиме chat-completion помимо карточки персонажа еще передается дофига дополнительной информации (main prompt, nsfw prompt, jailbreak prompt), и они в таверне прописаны на английском языке. Из-за этого качество русского языка может снизиться. Рекомендую все эти промпты переписать на русский или совсем убрать. Редактировать на самой первой вкладке. Замечу, что jailbreak prompt передается в самом конце вашего диалога, после вопроса пользователя, перед ответом LLM. Остальные промпты идут в начале диалога.
Режим chat-completion не поддерживается для llama.cpp и koboldcpp. Для них только text-completion.

- phi-3-medium-14B
приятно удивила. Хороший русский язык, довольно умная, влазит в мои 12 GB VRAM в q6 кванте. Из минусов – очень зацензурена, поэтому рекомендую файнтюн от Ильи Гусева - saiga_phi3_medium. По ощущениям – меньше речевых ошибок и меньше цензуры. Гуфы: https://huggingface.co/olkovi/saiga_phi3_medium_sft_m1_d2_kto_m5_d7/tree/main

Рекомендуемые мной настройки для таверны для saiga_phi3: temp: 0.50, min_p:0.10, context: 1500, rep_pen:1.2, freq_pen: 0.15, instruct mode: Enabled, instruct template: phi
В стоп-токены добавляю символ новой строки \n. Чтобы LLM не писала полотна текста лишних пояснений.

phi-3-medium есть бесплатно по API в openrouter. На халяву дают 20 запросов в минуту и 200 запросов в день, но мне показалось, что меньше. Работает без впн, нужна регистрация, чтобы получить api ключ. https://openrouter.ai/

Использование правильного инстракт шаблона улучшает качество ответов модели и уменьшает количество ошибок, но увеличивает цензуру (предположение). Для разных моделей инстракт шаблон разный – обычно его описывают в карточке модели на HF. В таверне прописаны самые популярные шаблоны. Я замерил количество речевых ошибок у phi3 в инстракт шаблоне phi и без него – с ним, грамотность возросла на 20%.

- Сэмплер min_p
Отлично отсекает маловероятные токены в ответе, снижая количество речевых ошибок. Рекомендую значение 0.10 для русского языка. Большие значения улучшают грамотность, но снижают вариативность ответов.

- Использование небольшого контекста.
Качество ответов у большинства LLM, что я тестировал, падает с ростом размера контекста. Ответы становятся однообразными, скучными, появляются повторы. Сейчас использую размер – 1500-2000 токенов. Если нужно, чтобы какие-то факты персонаж запомнил – вношу их списком в карточку персонажа.

- Качество поиска по контексту
Проводил тут тест phi-3-medium-128K (не сайга) и выяснил, что несмотря на ее огромный заявленный размер контекста (128 000) – пользоваться им она умеет плохо. Факт, упомянутый в начале диалога (например, цвет предмета) забывается уже примерно после 1500 токенов беседы. Есть подозрение, что у других моделей ситуация не намного лучше, но сам не тестил. Возможно, проблема именно в русском языке. Поэтому опять переношу значимые факты в карточку персонажа и юзаю маленький контекст.

(продолжение в следущем посте)
👍15🔥7👏1
(часть 2)

- talk-llama-fast 0.1.8

В talk-llama-fast пока нет поддержки instruct режима, но есть поддержка phi-3 и новый сэмплер min_p. Используйте параметр -min_p 0.10 в свежей версии 0.1.8 (кроме min_p ничего нового не добавлял). https://github.com/Mozer/talk-llama-fast/releases/tag/0.1.8

- Сдвиг контекста (сontext shifting)

Llama.cpp и koboldcpp по умолчанию поддерживают сдвиг контекста – это когда при превышении размера диалога контекст не пересчитывается заново (prompt processing), а просто сдвигается без какой-либо задержки по времени.

Без него для больших LLM, которые не помещаются полностью в VRAM, процесс пересчета может достигать нескольких минут, а такое случается очень часто, сводя на нет всю скорость работы. Сдвиг контекста решает эту проблему, но есть нюанс – чтобы сдвиг работал – начало текста не должно меняться, а меняться могут только последние сообщения. Но таверна так не умеет, она всегда клеит в начало карточку персонажа + всякие системные промпты, затем обрезает диалог под нужную длину, выкинув старые сообщения, и только потом отдает все это в ламу.

В результате, при использовании больших LLM 35B+ имеем огромные задержки раз в несколько сообщений, когда весь контекст диалога решил пересчитаться. Но есть решение – нужно в таверне выставить огромный размер контекста (204800 + галочка unlocked) и отдать весь процесс обрезания в руки ламы/кобольда. Из минусов – вы потеряете описание персонажа и системные промпты – они были в начале текста и лама их со временем обрежет. Еще минус – если ваш диалог превысит 200к – таверна опять начнет сама обрезать сообщения и конекст шифтинг опять испортится. Еще минус – иногда лама почему-то плохо обрезает, контекст кончается, и генеририруется бред, но, возможно, этот баг уже пофиксили.

В следующих постах расскажу о моем ноу-хау - инъекции случайных инструкций в роулплее с LLM (накодил для таверны и тг бота). А еще будет пост про нюансы генерации картинок в SD внутри SillyTavern.
👍21🔥9
Случайные инструкции для LLM в роулплее

Последнее время постоянно использую дополнительные случайные инструкции для каждого ответа персонажа. Написал простой скрипт, который вклинивается между запросом пользователя и ответом LLM в таверне и внедряет примерно такую инструкцию: [Инструкция: Будь милой. В ответе верни ровно 10 слов. В конце задай вопрос.] Каждый раз инструкция разная, вероятности у всех предложений прописаны разные. Разные инструкции могут накладываться и дополнять друг на друга. Всего - 32 инструкции в 5-х блоках.

Пример скрипта на питоне:
if random_n0 < 10:
new_instruct += " Начни свой ответ с буквы А."
elif 90 <= random_n0 < 100:
new_instruct += " Начни свой ответ со слова: 'Конечно'."

if random_n2 < 15:
new_instruct += " Не соглашайся ни с чем!"
elif 30 <= random_n2 < 45:
new_instruct += " Вместо ответа пошути."


Из плюсов – вариативность ответов выросла значительно. Удобно рероллить ответы, пока не появится нужный. Лупов стало меньше. Для роулплея подходит идеально, но не подходит для умного помощника, от которого требуется полезность и достоверность. Для мужских персонажей (если надо) предложения придется переделать, чтобы род совпадал. Для инглиша – тоже. Важно заметить, что LLM не всегда дословно исполняет эти инструкции – иногда она их игнорит полностью или частично, это нормально.

В talk-llama-fast пока нет, но скоро появится. Пример скрипта на nodejs для sillyTavern 1.12.1 выложил на свой github. Если у вас таверна этой версии – можно просто заменить 3 файла. Если у вас другая версия – то придется вручную перенести 2 блока кода из моих js файлов в оригиналы. После замены кода – чтобы включить этот режим, нужно прописать текст RND как стоп слово в таверне на третьей вкладке. Пример: ["<|im_end|>", "\n", "RND"]

Полная инструкция на гитхабе на английском: https://github.com/Mozer/SillyTavern_rand_instruct

Работает с кобольдом, llama.cpp и всеми другими LLM по API, например cohere/command-r-plus.

25 июня внедрил эту конструкцию в своего телеграм бота @talkllama для большинства персонажей, кроме поэтов. Вероятности прописаны не очень высокие, поэтому заметить эффект можно не всегда. Но, в целом, впечатления положительные, ответы стали менее шаблонные.
👍19🔥3🤔2
Gemma-2-9b и 27b

Вышли 2 модельки от Гугла, по моим первым оценкам - весьма неплохие. Судя по табличке с арены - 9b моделька где-то на уровне gpt4 старых версий. Сейчас она на 18 месте среди всех. Размер контекста - небольшой, всего 8k.

Затестил 9b-q6 в русском роулплее, и она показала себя весьма хорошо. Это, наверное, одна из немногих моделей, которая может работать на русском при температуре 1.0 почти без ошибок. На последнем скрине есть настройки, с которыми болтал, min_p поставил на 0.06, а температуру на 0.90 - ошибок было очень мало. При этом я включил instruct template 'gemma', его нет по умолчанию в таверне, пришлось прописать вручную на основе карточки на странице модели у bartowski.

Еще использовал свой random instruct код из поста выше для того, чтобы ответы были более разнообразными. Из изменений - уменьшил количество шуток - они тут совсем не по теме выходили. И еще в файле rand-instruct.js изменил строчку new_instruct = "[Инструкция:"+new_instruct+"]"; на new_instruct = "<Инструкция>"+new_instruct+"<end_of_turn>"; - без этого изменения llm иногда возвращала лишнюю квадратную скобку в ответе. Ну и еще: цензуры почти нету или мои инструкции ее перебивают. 😁🤷‍♂️

Гуфы: https://huggingface.co/bartowski/gemma-2-9b-it-GGUF
Гуфы: https://huggingface.co/bartowski/gemma-2-27b-it-GGUF
Нужна свежая лама: https://github.com/ggerganov/llama.cpp/releases
👍17🔥1
gemma-2-27b починили (но не полностью) в llama.cpp

До этого GGUF версия большой геммы была сломана и выдавала результаты хуже, чем в официальном апи от гугла.

Из минусов - пока поддерживается только размер контекста не больше 4096. Поддержку скользящего контекстного окна (sliding context window) еще не завезли. Когда завезут - скорее всего, опять придется переделывать гуфы.

Кто-то писал, что новые изменения в llama.cpp также затрагивают и гуфы малой gemma-2-9b, так что, возможно, и их надо переквантовать и перекачать (но пока не тестил, есть ли разница).

Еще Гугл признался, что тренировал Гемму на вопросах (но не ответах) из датасета LMSYS Chatbot Arena. Хорошо это или плохо - неясно.

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

В роулплее пока не тестил, на моих 12 GB vram довольно медленно отвечает, около 3 токенов в секунду (жрет 20+ гигов памяти в q5).

Анекдот про чебурашку в комменты скину, он на грани.

Нужна свежая llama.cpp b3266: https://github.com/ggerganov/llama.cpp/releases
Нужны свежие переквантованные гуфы (старые сломаны):
https://huggingface.co/grapevine-AI/gemma-2-27b-it-gguf/tree/main
🔥11👍2
Hallo - анимация портретов по голосу

Использует диффузионные нейросети (на основе SD 1.5) для генерации движения губ, эмоций и позы тела. Из плюсов - неплохо справляется с полуракурсами до 30° на фото. На выходе - видео 512х512. Может петь под музыку - но я не тестил, слишком медленно генерирует. Из минусов - лицо не всегда похоже на оригинал.

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

Онлайн демо не нашел, официальный space на HF бесплатно не работает. Space от fffiloni - тоже.

Скорость: 25 минут на генерацию видео длиной 5 секунд на моей 3060.
Требует: 9.4 GB VRAM
Теоретически, можно запустить в бесплатном колабе, но готовых колабов я не нашел.

Если кто захочет запустить локально - учтите, нужен питон 3.10-3.11. На питоне 3.12 не запустится, я проверил.

За наводку спасибо подписчику.

https://github.com/sdbds/hallo-for-windows
👍25👎3
Под вдохновением от gandalf lakera написал вам новый челлендж - уломать нового персонажа april согласиться пойти на свидание с вами. Базовые джейлбрейки постарался обезвредить, но вы, наверняка, быстро найдете новые 😁
Эйприл Ладгейт — персонаж комедийного сериала «Парки и зоны отдыха» - апатичная стажерка со своеобразным черным юмором.

Апдейт 1: переименовал Алису в Эйприл, ей такой образ больше подходит.
Апдейт 2: уже прошло часа 4 и никто пока не уломал ее на свидание. Непорядок. 🤷‍♂️

Бот тут: @talkllama
👍11🔥3😁3
Франкенштейн nvidia 2080ti 22 GB

Китайцы заменили стоковые модули памяти по 1GB на 2 GB. В результате VRAM увиличилась с 11 до 22 GB. Купил на али, доехала за 15 дней. У того продавца уже кончились, поэтому дам другого, чисто для справки: https://aliexpress.ru/item/1005006426865563.html
Вышло 41800 руб = 38300 + 3500 пошлина (покупал когда доллар падал до 83)

Приехала в коробке от 3050, коробка вся замотана непрозрачным скотчем. На самой плате опозновательных знаков не нашел, хз как понять, какая именно это модель.
Визуально - почти новая, каких либо следов использования не видно, только по контактам PCI-E можно видеть, что она раньше уже где-то стояла. Сзади бэкплейт - пластиковый. Температура в простое - 35, под нагрузкой пока выше 50 не видел, но продолжительное время еще не гонял.

Кто сказал, что в мини-пк или ноутбук, у которого вообще нет PCI-E слотов, нельзя воткнуть 4 видеокарты? Можно 😁 Нужен m2 переходник и райзеры.
Заказал себе сплиттер m2 - 4x PCI-E x16. У того продавца тоже кончились, дам другого, для справки: https://aliexpress.ru/item/1005004873201793.html

И еще 2 райзера взял: https://aliexpress.ru/item/1005004134020455.html

Завелось все сразу без бубнов и драйверов. llama.cpp работает, SD, xtts работает. Как видно из gpu-z обе видеокарты работают в режиме PCI-E x1. Не супер быстро, но жить можно (скорость загрузки модели с диска в vram будет дольше).

Затестил 2080ti 22 GB в llama.cpp в режиме соло и в режиме сплит-вдвоем с 3060 12 GB.

2080 Ti 22 GB
gemma-2-27b-it-Q5_K_M
ctx VRAM t/s
4096 21.9 19.34

2080 Ti 22 GB
gemma-2-9b-it-Q6_K
ctx VRAM t/s
4096 9.2 32.95

2080 Ti 22 GB
saiga_llama3_kto_8b-q5_0
ctx VRAM t/s
4096 6.0 55.87

gpu-split 2080ti+3060
gemma-2-27b-it-Q5_K_M
ctx VRAM t/s
4096 12+7 13.30

gpu-split 2080ti+3060
c4ai-command-r-v01-imat-Q6_K
ctx VRAM t/s
2000 17+10 11.96


В gpu-tensor-split режиме скорость падает на 30%, неприятно. Возможно, 3060 не тащит.
Для сравнения 3060 соло в lama-3-8b дает где-то 35-40 t/s.

В SD pony diffusion XL скорость 2.20it/s для 1024х1024 и дефолтных настроек в A1111. 1 картинка с 20 steps генерируется за 9 секунд. Если включить расширение tensorRT, наверное, будет еще быстрее, но мне лень компилировать его для всех разрешений.

Погрел ее в SD при полной нагрузке в 250 Вт в течение нескольких минут. Температура выше 67C пока не поднималась, кулеры крутятся всего на 2000 оборотах.

В idle состоянии кулеры ниже 1400 rpm (41%) не опускаются. Почитал интернет - это известная фича 2080ti. Nvidia считает, что это горячая карта и не дает снижать обороты кулеров ниже 41% даже в простое при 35С. Поэтому она довольно шумная в сравнении с моей 3060, которая без нагрузки просто отключает все кулеры.

На обычной 2080ti 11 GB умельцы шьют биосы чтобы отключить это ограничение, но что-то я не хочу шить биос на карту с модифицировнной памятью, рискованно.

Мое мнение - брать можно. Наверное, возьму себе еще 1 или 2.
🔥26👍7🥴4😁1