Это перевод статьи https://medium.com/@lukekerbs/goodbye-api-keys-hello-local-llms-how-i-cut-costs-by-running-llm-models-on-my-m3-macbook-a3074e24fee5
Учитывая актуальность поиска решения для локальных реализаций ИИ стоит ознакомиться.
Было 2 часа ночи во вторник, когда я наконец сорвался. Я пялился на панель управления использованием API OpenAI, наблюдая, как кредиты утекают, как песок в песочных часах, пока я тестировал свой последний проект. Каждый вызов API был похож на бросание монет в цифровой колодец желаний, за исключением того, что желания были просто... обычными разговорами с ИИ.
«Должен быть способ получше», — подумал я. Оказывается, он есть!
После некоторых поисков я обнаружил MLX-LM — фреймворк Apple для локального запуска больших языковых моделей на компьютерах Mac с Apple Silicon. В течение недели я отменил подписку OpenAI и настроил мощное локальное решение LLM, которое работает полностью на моем MacBook. Никаких ключей API, никаких счетчиков использования, никакой сетевой задержки — просто мой компьютер делает то, что должны делать компьютеры: вычисляет всякую всячину.
В этой статье я расскажу вам, как я освободился от облачной парадигмы ИИ и создал собственную локальную языковую модельную площадку с использованием Python и MLX-LM. Внимание, спойлер: это на удивление просто.
Позвольте мне представить ситуацию: я разработчик, который любит работать с языковыми моделями. Это волшебные инструменты, которые изменили мой подход к проектам, от генерации контента до анализа данных. Но мои отношения с облачными API становились... сложными.
Вот почему я в конце концов решил прекратить это:
Так что же такое MLX-LM?
MLX-LM — это библиотека Python, созданная на основе фреймворка MLX от Apple, которая позволяет запускать большие языковые модели непосредственно на вашем Mac с Apple Silicon. Она использует эти модные «нейронные движки» в чипах серии M, чтобы обеспечить удивительно хорошую производительность без необходимости в выделенном графическом процессоре.
Лучшая часть? Он поддерживает множество популярных моделей с открытым исходным кодом, таких как Mistral, Llama, Phi и Gemma. Благодаря умным методам квантования (по сути, сжатию моделей для большей эффективности) вы можете запускать модели с миллиардами параметров даже на машине с ограниченной оперативной памятью.
Настройка MLX-LM неожиданно проста. Никаких сложных зависимостей, никаких кошмаров совместимости — всего одна команда:
pip установить mlx-lm
Вот и все. Серьезно. Эта единственная команда устанавливает все, что вам нужно для запуска моделей локально. Когда я впервые это обнаружил, я ждал подвоха — наверняка будут проблемы с драйверами или какая-то сложная настройка? Нет. Инженеры Apple заслуживают золотую звезду за этот оптимизированный опыт.
Начнем с самых основ — загрузки модели и генерации текста:
При первом запуске MLX-LM загрузит модель (около 3,8 ГБ для этой конкретной модели), что может занять несколько минут в зависимости от вашего интернет-соединения. Но после этой первоначальной загрузки? Молниеносный локальный вывод.
Когда я впервые запустил этот код и увидел текст, появляющийся на моем экране — полностью сгенерированный на моем ноутбуке без каких-либо вызовов API — это было похоже на маленькую революцию. Мой MacBook внезапно стал самодостаточным источником искусственного интеллекта.
Большинство практических приложений LLM в наши дни включают чат-взаимодействия. Вот как создать простое чат-приложение с MLX-LM:
из mlx_lm импорт загрузка, генерация из mlx_lm. models . кэш импорт make_prompt_cache
Этот пример создает интерфейс чата, который сохраняет историю разговоров и использует кэширование подсказок для ускорения многооборотных разговоров. Первый раз, когда я создал это и имел плавный многооборотный разговор, не видя, как тикает счетчик использования API, был глубоко удовлетворяющим. Это было похоже на снятие цифровых наручников, которые я даже не осознавал, что ношу.
Если вам нужен более интерактивный опыт с постепенным появлением токенов (например, эффект набора текста в ChatGPT), потоковая передача — ваш друг:
из mlx_lm импортировать stream_generate
Когда я впервые увидел, как на моем экране посимвольно появляется текст, сгенерированный локально на моем MacBook, у меня возникло редкое чувство «жизни в будущем». Мой ноутбук не отставал от облачных серверов!
Одной из проблем локального запуска этих моделей является управление памятью. Вот как я оптимизирую использование памяти:
Этот код выглядит техническим, но по сути он говорит MLX-LM: «Эй, будь эффективен в использовании памяти и убирай за собой». Эти оптимизации позволяют мне запускать более крупные модели, не переключая вентиляторы моего MacBook в режим вертолета.
Одной из самых крутых функций MLX-LM является возможность тонкой настройки моделей с вашими собственными данными с помощью техники, называемой Low-Rank Adaptation (LoRA). Вот где локальный подход действительно сияет — попробуйте тонкую настройку модели через API и посмотрите, как ваш кошелек лопнет.
Вот как это можно сделать:
А чтобы использовать вашу персонализированную модель:
Я использовал это для создания специализированных помощников, обученных моему собственному стилю письма и знаниям предметной области. Процесс на удивление доступен, даже если вы не являетесь экспертом по машинному обучению.
Когда дело доходит до производительности, важно понимать компромиссы между локальными моделями и облачными API. Вот что я заметил:
Преимущество локального развертывания в том, что вы можете свободно экспериментировать, чтобы найти правильный баланс для ваших конкретных потребностей, не увеличивая счета за API.
Хотите пойти до конца и создать собственную локальную альтернативу OpenAI API? MLX-LM включает в себя встроенный HTTP-сервер, который делает это чрезвычайно простым:
Это запускает локальный сервер с конечными точками, которые имитируют API OpenAI:
Я использовал это для создания замены OpenAI в нескольких своих проектах, часто требуя минимальных изменений кода. Первый раз, когда я поменял конечную точку API и наблюдал, как мое приложение продолжает работать безупречно — но без каких-либо затрат на токен — был глубоко удовлетворен.
Вот несколько уроков, которые я усвоил после нескольких месяцев использования MLX-LM в качестве основной платформы для получения степени LLM:
После перехода на MLX-LM я создал несколько приложений, реализация которых при использовании моделей на основе API была бы слишком затратной:
Конечно, ни одно решение не идеально. Вот несколько честных ограничений, с которыми я столкнулся:
Давайте немного поговорим о деньгах, поскольку это может быть самой веской причиной попробовать подход MLX-LM.
Запуск моделей на выделенных графических процессорах Nvidia — традиционный способ работы с ИИ, но вы в последнее время оценивали их? Приличный графический процессор для работы с ИИ стоит около 1000 долларов (если вы сможете найти его по рекомендованной розничной цене) и легко поднимается до 3000 долларов и более для моделей высокого класса. И это только стоимость оборудования — добавьте энергопотребление, потребности в охлаждении и системную интеграцию.
Аренда облачных GPU не намного лучше. Один экземпляр A100 GPU может стоить $1,50-$4,00 в час в зависимости от поставщика. Если вы проводите масштабные эксперименты или создаете приложения, эти расходы растут пугающе быстро.
Но вот прекрасная простота подхода MLX-LM: вы используете уже имеющееся у вас оборудование. Мой MacBook Pro на 18 ГБ с чипом M3 не был куплен специально для работы с ИИ — это мой повседневный компьютер. Локальное использование этих моделей означает:
Я подсчитал, что всего за два месяца умеренного использования API я сэкономил достаточно, чтобы покрыть расходы на несколько хороших ужинов. За год? Экономия достаточно значительна, чтобы заставить меня задаться вопросом, почему я не сделал этот переход раньше.
Конечно, абсолютная пиковая производительность может не соответствовать выделенной установке GPU за 4000 долларов, но соотношение стоимости и возможностей запуска моделей на уже имеющемся у вас оборудовании непревзойденно. Это как обнаружить, что ваш семейный седан внезапно может конкурировать со спортивными автомобилями — может быть, не в каждой гонке, но в достаточном количестве, чтобы заставить вас задуматься, почему все тратят деньги на спортивные автомобили.
Я должен упомянуть, что я запускаю все это на моем 18 ГБ MacBook Pro с чипом M3. Это аппаратное сладкое пятно оказалось более чем способным для большинства моих локальных потребностей LLM. Нейронный движок в M3 эффективно обрабатывает матричные операции, необходимые этим моделям, в то время как 18 ГБ ОЗУ дают мне достаточно запаса для запуска даже более крупных 7B и некоторых 13B параметрических моделей (при квантовании).
Когда я впервые решил попробовать локальные LLM, я не был уверен, справится ли мой MacBook с этой задачей. Существует устойчивый миф о том, что для запуска чего-либо, связанного с ИИ, нужно специализированное оборудование с массивными графическими процессорами. Но Apple Silicon кардинально изменила это уравнение. Мой относительно стандартный MacBook Pro справляется с этими моделями с удивительной грацией, лишь изредка раскручивая вентиляторы, когда я выхожу за рамки с более крупными моделями или более длинными последовательностями поколений.
Несмотря на ограничения, упомянутые ранее, я не пожалел о своем решении отказаться от моделей на основе API. Свобода экспериментировать без наблюдения за работой счетчика, преимущества конфиденциальности от хранения данных локально и удивительная производительность Apple Silicon с MLX-LM изменили мой подход к ИИ в моих проектах.
То, что начиналось как ночной эксперимент по экономии денег, превратилось в фундаментальный сдвиг в моем отношении к интеграции ИИ. Вместо того, чтобы относиться к ИИ как к удаленной услуге, которую нужно потреблять экономно, он стал локальным ресурсом, таким же доступным, как и любая другая вычислительная возможность.
Поскольку модели с открытым исходным кодом продолжают быстро совершенствоваться, я убежден, что локальное выполнение — это будущее многих приложений ИИ или, по крайней мере, важнейший компонент гибридного подхода, который обеспечивает баланс между стоимостью, конфиденциальностью и возможностями.
Если у вас есть Mac с Apple Silicon, я рекомендую вам попробовать MLX-LM. Свобода экспериментировать без счетчиков использования раскрепощает, а преимущества конфиденциальности существенны. Вы можете удивиться, насколько эффективной может быть ваша локальная настройка.
Готовы начать? Установите MLX-LM сегодня pip install mlx-lmи присоединяйтесь к местной революции LLM!