Запуск моделей искусственного интеллекта с открытым исходным кодом локально на наших собственных компьютерах дает нам конфиденциальность, бесконечные возможности для работы и свободу от крупных корпораций. Это почти вопрос свободы слова.
Однако для нас, у которых мало графических процессоров, собственный компьютер с искусственным интеллектом кажется дорогой мечтой.
Что, если я скажу вам, что вы можете получить полезный компьютер с искусственным интеллектом за 300 долларов? Заинтересованы? Вам необходимо предоставить собственный монитор, клавиатуру и мышь. И вам нужно немного повозиться с операционной системой Linux, драйверами, промежуточным программным обеспечением и конфигурациями.
Чтобы уточнить: мы НЕ говорим об «обучении» или «тонкой настройке» больших генеративных моделей ИИ. Мы сосредоточимся на том, как запускать LLM с открытым исходным кодом (большие языковые модели, такие как
Теперь продолжим.
Давайте предположим, что один из основных вариантов использования домашнего компьютера с искусственным интеллектом — это работа.
Однако для более высокой скорости вывода вам необходимо следующее. В противном случае вы будете словно наблюдать, как волосы растут на вашей ладони, в то время как LLM выплевывает по одному жетону за раз.
Для генерации изображений с помощью Stable Diffusion вам понадобится мощность графического процессора. Однако для этого вам не обязательно иметь очень навороченный графический процессор. Вы можете использовать встроенный графический процессор уже на своих домашних компьютерах:
Все компьютеры Mac с процессором M1/M2/M3, который объединяет процессор, графический процессор и высокоскоростную память (они действительно хороши, но из-за цены исключены из этой конкретной статьи).
AMD APU (например, Ryzen 7 5700U), который объединяет процессор и графический процессор для недорогих мини-ПК. Этому будет посвящена данная статья.
ЦП Intel (например, Core i5-1135G7), который также объединяет ЦП и графический процессор. Они немного превышают бюджет всего мини-ПК в 300 долларов, но читатели могут изучить их самостоятельно.
Мини-ПК на базе AMD со следующими характеристиками обычно продается менее чем за 300 долларов. Я не хочу рекламировать какой-либо конкретный бренд, поэтому вы можете поискать сами:
Я немного потратился и выбрал модель за 400 долларов с 32 ГБ ОЗУ и SSD на 1 ТБ (при прочих равных условиях). Основная причина в том, что я исследую LLM с открытым исходным кодом и хотел бы запускать более крупные модели в дополнение к Stable Difusion. Но вы сможете сделать почти все, что описано в этой статье, на компьютере стоимостью 300 долларов.
Для APU AMD, таких как
Вам нужно изменить это в зависимости от вашего основного варианта использования:
Если вам нужно только запустить вывод LLM, вы можете пропустить весь этот подготовительный шаг. Поскольку для вывода LLM потребуется использовать только ЦП, и вам следует сохранить большую часть оперативной памяти для ЦП, чтобы можно было запускать более крупные модели LLM.
Если вам нужно бежать
В моем случае я хочу запустить вывод Stable Diffusion XL и LLM на одном мини-ПК. Поэтому я хотел бы выделить 16 ГБ (из 32 ГБ) для графического процессора.
Добиться этого можно, изменив настройки в BIOS. Обычно существует верхний предел, и настройка по умолчанию может быть намного ниже верхнего предела. На моем компьютере верхний предел составлял 16 ГБ или половину всей доступной оперативной памяти.
Если BIOS вашего компьютера поддерживает такие настройки, измените их на желаемое число. В моем биосе такой настройки нет.
Если в вашем BIOS нет этой настройки, следуйте удобной инструкции «Разблокировка распределения памяти графического процессора на APU AMD Ryzen™?» Уинстон Ма. Я попробовал, и все сработало, так что теперь у меня 16 ГБ видеопамяти.
AMD
Чтобы установить и заставить AMD ROCm работать, вы должны убедиться, что версии аппаратного обеспечения графического процессора, дистрибутива Linux, ядра, Python, драйвера HIP, библиотеки ROCm и pytorch совместимы. Если вы хотите минимум боли и максимальную вероятность успеха с первого раза, придерживайтесь рекомендуемых и проверенных комбинаций.
Пожалуйста, перейдите по следующей ссылке, чтобы получить совместимые версии ОС и ядра Linux и установить их. Первоначально я совершил ошибку, просто установив свою любимую ОС Linux и ядро Linux по умолчанию, и мне было очень трудно вернуться назад, чтобы решить проблемы совместимости. Вы можете избежать этой боли, просто используя официально поддерживаемые комбинации.
Если вся установка завершится успешно, вы можете ввести rocminfo
и отобразится что-то вроде этого (я вырезал только самые важные части, выделенные желтым цветом):
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
DMAbuf Support: YES
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 7 5800H with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics
Vendor Name: CPU
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16777216(0x1000000) KB
Зависимость Python может быть довольно сложной, поэтому рекомендуется настроить подходящую среду. Вы можете использовать либо
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
Следующее относится только к APU со встроенной графикой. Несмотря на то, что они официально не поддерживаются РПЦ, доказали свою эффективность следующие меры.
export HSA_OVERRIDE_GFX_VERSION=9.0.0
Теперь, после всех сложных действий, проверим, работает ли ROCm с Torch. И вы можете видеть, что ROCm «притворяется» CUDA для целей Pytorch.
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
Давайте начнем с чего-то простого для нашего недавно сконфигурированного компьютера с искусственным интеллектом стоимостью 300 долларов: локального запуска большой языковой модели. Мы можем выбрать один из популярных режимов с открытым исходным кодом:
Кроме того, вы также можете попробовать небольшие LLM от
Мы будем использовать
Сначала вам нужно установить wget
и git
. Затем следуйте инструкциям по компиляции и установке llama.cpp.
sudo apt-get install build-essential
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
Чтобы запустить LLM на нашей недорогой машине вместо облачных серверов с дорогими графическими процессорами, нам нужно использовать «сжатую» версию моделей, чтобы они могли поместиться в пространство оперативной памяти. В качестве простого примера модель LLaMA-2 7B имеет 7B параметров, каждый из которых представлен числом float16 (2 байта).
Кроме того, формат файла должен быть
Сначала мы протестировали его на мини-ПК AMD и получили около 10 токенов в секунду. На самом деле это вполне прилично, и вы можете продолжать общение с LLM, не слишком долго ожидая.
Конфигурация системы:
Инструкция командной строки:
./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock
llama_print_timings: load time = 661.10 ms
llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)
llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)
llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)
llama_print_timings: total time = 64114.27 ms
Затем мы протестировали на мини-ПК Intel и достигли скорости около 1,5 токенов в секунду. Это слишком медленно для плодотворного сеанса чата. Сравнение некорректное, поскольку Intel N5105 явно слабее AMD 5800H. Но это единственный мини-ПК Intel, который у меня есть. Если вы используете более мощный процессор Intel (например, Core i5-1135G7), вы должны получить сопоставимые результаты. Пожалуйста, сообщите о своих выводах в комментариях ниже.
Конфигурация системы:
./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock
llama_print_timings: load time = 14490.05 ms
llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)
llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)
llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)
Также обратите внимание на эту страницу, касающуюся AMD ROCm.
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
Тест 1
SDXL (максимальное разрешение 1024x1024) рекомендует иметь как минимум 12 ГБ видеопамяти, поэтому вам обязательно необходимо выполнить шаг «Подготовка 1», чтобы выделить 16 ГБ видеопамяти для iGPU. Итак, эта задача возможна только с мини-ПК за 400 долларов.
./webui.sh --upcast-sampling
Тест 1:
Тест 2:
Хотя эта статья посвящена операционным системам Linux, вы можете заставить Stable Diffusion работать и в Windows. Вот мои эксперименты:
Тест 1:
Итак, вам нравится запускать собственные генеративные модели искусственного интеллекта на новом мини-ПК за 300 долларов? Я надеюсь, что да.
Модели искусственного интеллекта с открытым исходным кодом, работающие на персональных устройствах, — одна из самых интересных областей для специалистов, поскольку ни у кого из нас не будет огромного пула графических процессоров для обучения базовой модели. Это позволит создать новое поколение приложений, которые будут одновременно очень умными и при этом сохранят конфиденциальность наших данных.
Что дальше?
И удачи в работе с искусственным интеллектом, открытым исходным кодом и возможностью установки на устройстве!