Алексей Никитаев
Программист, блоггер · 10.09
Опыт написания кода по ТЗ для llm
Оригинал моей статьи: https://nikitayev.livejournal.com/143455.html
Оригинал исследования на предмет реального размера контекста:
https://github.com/hsiehjackson/RULER
Победитель - Mixtral 8x7b На второе место можно поставить две БЯМ: Llama 3.1 70b Mixtral 8x22b
На данный момент могу оценить, что работа с Mixtral 8x7b мне в своё время очень понравилась. Код генерирует полностью, но может начать сваливаться в непрерывную генерацию мусора при определённых настройках. Это болезнь всех старых LLM, выпущенных до мая 2024 года.
Современные LLM работают очень устойчиво, но лени стало невероятное количество.
Приходится устанавливать следующие параметры:
Значение temperature: 0 Штраф за повторение: 1.1 Min P: 0.0000001 Top P: 0.000001 Top K: 500
А чтобы модель побольше держала данных в памяти - за то отвечает размер пакета оценивания. Устанавливаю его в максимум: 10000
Эти настройки работают очень хорошо для большинства вариантов LLM llama 3.1 8b и 70b
Для llama 3.1 405b даже эти настройки не способны избавить от лени.
При этом, llama 3.1 405b в начале генерации сообщает, что обязательно сгенерирует код полностью, но по факту игнорирует своё обещание.
Чтобы код программы сгенерировался как можно полнее, в начале задания необходимо ставить фразу:
Write fill program code on python/c#/c++...
В конце можно иногда добавить аналогичную по смыслу строку, но для отдельных случаев такая строка только повредит.
В системный Промт надо вставить строку:
You are an assistant to a programmer. Realize full code for program.
Увеличивать размер промта вредно - отрицательно сказывается на генерации.
Многие модели Mistral не принимают формат проста, который установлен по умолчанию в LM studio. Им нужен базовый - первый из списка. Иначе, пишут ошибку, если пытаешься задать системный промт.
Экспериментальная функция Flash attention в настройках запуска модели улучшает результат.
В основном, для больших моделей достаточно квантования iq5 - лучше ускоряется видеокартой.
Разгружать на видеокарту для больших моделей можно до 70% слоёв. Малые модели можно разгружать на 50%.
Модели Mistral большие труженицы, но как их всё правильно понимать - хороший вопрос.
Когда составляете ТЗ для LLM - имеет значение последовательность описания блоков. Что напишете первым - то первым и будет реализовано и показано. Даже основная форма приложения окажется в конце, если описана в конце.
Глупые они все, кроме умных, но ленивых llama 3.1 405b и chat GPT-4o.
Код на английском языке генерируется лучше, чем на русском.
DeepSeek Code v2 не умный. Просто умеет правильно конвертировать с языка на нужный язык программирования. Слабее моделей llama 3.1. И это относится только к самому большому варианту, а не к малым. Малые недееспособны в принципе.
еще контент автора
еще контент автора
Алексей Никитаев
Программист, блоггер · 10.09
войдите, чтобы увидеть
и подписаться на интересных профи