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

Nov 23, 2024 07:38


Обзорная статья по лучшим практикам использования больших языковых моделей (LLM) для работы с кодом.

Какие большие языковые модели, что я могу рекомендовать:

  1. Athene-V2-Chat-GGUF 72B- самая продвинутая БЯМ на сегодняшний день. Создана на основе Qwen2.5-72B-Instruct. Доступные варианты квантов для использования - от IQ3_XXS до Q8_0. Размер контекста - 32КБ. 80 слоёв.
  2. Qwen2.5-72B-Instruct-GGUF- не быстрая, очень качественная. Требует более 128ГБ оперативной памяти при квантовании Q8_0 и использовании полного размера контекста. Размер контекста - 32КБ. 80 слоёв.
  3. Llama-3.1-Nemotron-70B-Instruct_iMat_GGUF/Llama-3.1-Nemotron-70B-Instruct_fp16-00001-of-00004.gguf - очень мощная не быстрая модель. Результат иногда лучше, иногда на том же уровне, чем Qwen-2.5-72B-Instruct. Большой плюс - размер контекста 128КБ. 80 слоёв.
  4. Mistral-Large-Instruct-2411 - новая модель, на замену Mistral-Large-Instruct-2407. Главный плюс - время получения первого токена существенно меньше, чем у LLama 3.1 и Qwen 2.5. Количество слоёв = 88. Размер контекста 128K. Очень умная. По качеству генерации не уступает Qwen и Athene, но имеет свои особенности.
  5. LLama 3.1 405b Instruct - очень мощная модель, но очень капризная. У неё самое большое количество слоёв среди всех и одни из самых больших возможностей. Размер контекстного окна = 128K.
  6. second-state\Llama-3.3-70B-Instruct-GGUF/Llama-3.3-70B-Instruct-f16-00001-of-00005.gguf - новая, более продвинутая модель LLama. Лучше, чем любые предыдущие, но слабее Qwen, Athene и Mistral Large. Размер контекста 128K. Количество слоёв = 80.

Замечание по точности квантования моделей GGUF

Старайтесь использовать квантование от mradermacher.

Хорошие варианты квантования ищите среди тех моделей GGUF файлов, в имени которых есть «i1»: Mistral-Large-Instruct-2407-i1-GGUF, Mistral-Large-Instruct-2411-i1-GGU, Athene-V2-Chat-i1-GGUF и т.д.



Самые лучшие по качеству LLM содержат F16 и F32 среди вариантов моделей. Их проще искать используя запрос в Яндекс поиск:

Qwen 2.5 GGUF "F16"
Qwen 2.5 GGUF "F32"
и т.д.

Сравнение моделей можно найти тут: https://huggingface.co/Nexusflow/Athene-V2-Chat



Могу заявить, что уже нет нужды сильно увеличивать модели.

Уровень Athene V2 72B Chat с максимальным квантованием типа F16/F32 достаточен для работы с ним, как с разработчиком высочайшего уровня.

80 слоёв делают модель по уровню интеллекта не ниже качественного специалиста.

Современным моделям не хватает лишь количества слоёв.

Рекордсменом по количеству слоёв является модель LLama 3.1 405B с 126 слоями. И именно поэтому это самая умная модель, но так как её не правильно используют - поэтому возникают проблемы.

Ниже опишу какие проблемы не дают возможность полноценно использовать продвинутые LLM.

Главные проблемы, почему все не кинулись внедрять LLM:

  1. Нет опыта написания правильно оформленных технических заданий с разметкой Markdown
  2. В технических заданиях не уделяется внимание подготовительным шагам, в которых должны выстраиваться цепочки мыслей на обдумывание задачи, поиск решений и конструирование дизайна. Т.е., в любом качественном ТЗ должны содержаться такие блоки как:

    # На первом этапе, внутри тэга «Изучение» - ты должен построить цепочку мыслей, чтобы понять задачу.
    # На втором этапе, внутри тэга «Анализ» - ты должен построить цепочку мыслей, чтобы провести анализ задачи, чтобы найти методы её решения.
    # На третьем этапе, внутри тэга «Дизайн» - ты должен создать дизайн программы, который в соответствии с лучшими практиками программирования спроектирует программу и визуальные формы программы.
    # На четвёртом этапе, внутри тэга «Предварительный код» - ты построишь предварительный вариант программы.
    # На пятом этапе, внутри тэга «Проверка» - ты проверишь, что все нужные функции объявлены и библиотеки подключены.
    # На последнем этапе, внутри тэга «Результат» - ты напишешь код программы полностью, добавишь комментарии, добавишь обработчики ошибок, логгирование ошибок и инициализируешь константы.

    это лишь общий вид любого ТЗ на кодогенерацию.
    Он лишь должен показать, что чем больше мы заставляем писать ИИ - тем более качественный код получим в конце.
  3. Все LLM, количество слоёв у которых меньше 80 - не умеют «думать». Код с нуля они написать смогут (и то с большими проблемами и при наличии отлично прописанных ТЗ), но уже отладку программы им доверить нельзя.
  4. Чем больше размер пользовательского промпта (размер текста, посылаемого на обработку) - тем дольше будет думать LLM. Самые быстрые на первоначальном этапе - это модели Mistral и Mixtral, особенно с пониженным квантованием типа IQ3_XXS.
  5. Большие размеры контекстного окна существуют - их можно искать в интерфейсе LM Studio вводя в строке поиска: gradient, 1048K, 4194K и большой размер контекста есть у Mistral Nemo.
  6. Многие ожидают, что сфорулировав запрос к LLM, типа:
    «Напиши мне программу, которая будет общаться с видеокамерой, записывать видео, распознавать вторжение и оповещать пользователя через Telegram»
    они сразу получат готовое решение - ошибаются.
    Без корректного качественного ТЗ, которое должно быть написано так, чтобы его однозначно понял программист уровня джун - не получится. Именно поэтому, без предварительного этапа выяснения у ИИ чего ему не хватает в ТЗ - не получится. ТЗ необходимо пропускать через промпт, который проанализирует текст и укажет на наличие неоднозначностей и отсутствия необходимой информации (например, о моделях камеры и протоколах обмена).
  7. Настройки в LM Studio должны быть такие и никакие другие:
    Размер пакета оценки: по размеру контекста,
    Flash attention: желательно вкл. - увеличивается точность,
    Температура: 0,
    Потоки CPU: максимум доступных потоков, которые можно узнать в диспетчере задач,
    Min P: 1e-7,
    Top P: 0.000001,
    Top K: 500,
    Штраф за повторение: 1
    Разгрузка на GPU: если модель полностью не помещается в видеопамяти - то подбирать так, чтобы при работе модели температура GPU была максимальной. Узнать температуру GPU можно в диспетчере задач.
Мои статьи по кодогенерации и отладке:

Также, будет полезным почитать:

Мой личный набор БЯМ



Промпты опубликовал тут: https://disk.yandex.ru/d/iP_f37VTFKm_rA

mistral, llama, qwen, искусственный интеллект

Previous post Next post
Up