вступление
Запуск моделей искусственного интеллекта с открытым исходным кодом локально на наших собственных компьютерах дает нам конфиденциальность, бесконечные возможности для работы и свободу от крупных корпораций. Это почти вопрос свободы слова.
Однако для нас, у которых мало графических процессоров, собственный компьютер с искусственным интеллектом кажется дорогой мечтой.
Что, если я скажу вам, что вы можете получить полезный компьютер с искусственным интеллектом за 300 долларов? Заинтересованы? Вам необходимо предоставить собственный монитор, клавиатуру и мышь. И вам нужно немного повозиться с операционной системой Linux, драйверами, промежуточным программным обеспечением и конфигурациями.
Чтобы уточнить: мы НЕ говорим об «обучении» или «тонкой настройке» больших генеративных моделей ИИ. Мы сосредоточимся на том, как запускать LLM с открытым исходным кодом (большие языковые модели, такие как
Теперь продолжим.
Что делает хороший (и дешевый) компьютер с искусственным интеллектом?
Давайте предположим, что один из основных вариантов использования домашнего компьютера с искусственным интеллектом — это работа.
Однако для более высокой скорости вывода вам необходимо следующее. В противном случае вы будете словно наблюдать, как волосы растут на вашей ладони, в то время как LLM выплевывает по одному жетону за раз.
- Высокая пропускная способность процессора и памяти
- Более быстрая DRAM (как минимум DDR4, DDR5 будет еще лучше)
- Много памяти (минимум 16 ГБ), особенно если вы хотите запускать более крупные модели (более 7 ГБ)
Для генерации изображений с помощью Stable Diffusion вам понадобится мощность графического процессора. Однако для этого вам не обязательно иметь очень навороченный графический процессор. Вы можете использовать встроенный графический процессор уже на своих домашних компьютерах:
Все компьютеры Mac с процессором M1/M2/M3, который объединяет процессор, графический процессор и высокоскоростную память (они действительно хороши, но из-за цены исключены из этой конкретной статьи).
AMD APU (например, Ryzen 7 5700U), который объединяет процессор и графический процессор для недорогих мини-ПК. Этому будет посвящена данная статья.
ЦП Intel (например, Core i5-1135G7), который также объединяет ЦП и графический процессор. Они немного превышают бюджет всего мини-ПК в 300 долларов, но читатели могут изучить их самостоятельно.
А компьютер с искусственным интеллектом за 300 долларов?
Мини-ПК на базе AMD со следующими характеристиками обычно продается менее чем за 300 долларов. Я не хочу рекламировать какой-либо конкретный бренд, поэтому вы можете поискать сами:
AMD Райзен 7 5800H (8C/16T, до 4,4 ГГц)- 16 ГБ ОЗУ DDR4 (рекомендуется 32 ГБ)
- Твердотельный накопитель NVME M.2 емкостью 512 ГБ
Я немного потратился и выбрал модель за 400 долларов с 32 ГБ ОЗУ и SSD на 1 ТБ (при прочих равных условиях). Основная причина в том, что я исследую LLM с открытым исходным кодом и хотел бы запускать более крупные модели в дополнение к Stable Difusion. Но вы сможете сделать почти все, что описано в этой статье, на компьютере стоимостью 300 долларов.
Подготовка 1. Выделите достаточно памяти iGPU
Для APU AMD, таких как
Вам нужно изменить это в зависимости от вашего основного варианта использования:
Если вам нужно только запустить вывод LLM, вы можете пропустить весь этот подготовительный шаг. Поскольку для вывода LLM потребуется использовать только ЦП, и вам следует сохранить большую часть оперативной памяти для ЦП, чтобы можно было запускать более крупные модели LLM.
Если вам нужно бежать
Стабильная диффузия , особенноSDXL (1024x1024), вам необходимо выделить для iGPU столько ОЗУ, сколько позволяет система (обычно половина от общего объема ОЗУ)
В моем случае я хочу запустить вывод Stable Diffusion XL и LLM на одном мини-ПК. Поэтому я хотел бы выделить 16 ГБ (из 32 ГБ) для графического процессора.
Добиться этого можно, изменив настройки в BIOS. Обычно существует верхний предел, и настройка по умолчанию может быть намного ниже верхнего предела. На моем компьютере верхний предел составлял 16 ГБ или половину всей доступной оперативной памяти.
Хороший биос
Если BIOS вашего компьютера поддерживает такие настройки, измените их на желаемое число. В моем биосе такой настройки нет.
Плохой BIOS: используйте универсальный инструмент AMD
Если в вашем BIOS нет этой настройки, следуйте удобной инструкции «Разблокировка распределения памяти графического процессора на APU AMD Ryzen™?» Уинстон Ма. Я попробовал, и все сработало, так что теперь у меня 16 ГБ видеопамяти.
Подготовка 2. Установите драйверы и промежуточное ПО
Выровнять звезды
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
Зависимость Python может быть довольно сложной, поэтому рекомендуется настроить подходящую среду. Вы можете использовать либо
-
source venv/bin/activate
-
conda activate llm
Пайторч
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
Перезапись HSA
Следующее относится только к 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
Вывод LLM
Давайте начнем с чего-то простого для нашего недавно сконфигурированного компьютера с искусственным интеллектом стоимостью 300 долларов: локального запуска большой языковой модели. Мы можем выбрать один из популярных режимов с открытым исходным кодом:
Кроме того, вы также можете попробовать небольшие LLM от
Лама.cpp
Мы будем использовать
Сначала вам нужно установить 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 байта).
- Число с плавающей запятой 16: 14 байт или 14 ГБ, что не поместится в нашу 8 ГБ ОЗУ.
- Квантовано до 4 бит: 3,5 Ббайт или 3,5 ГБ, которые теперь могут поместиться в нашу 8 ГБ ОЗУ.
Кроме того, формат файла должен быть
Тестирование на мини-ПК AMD
Сначала мы протестировали его на мини-ПК AMD и получили около 10 токенов в секунду. На самом деле это вполне прилично, и вы можете продолжать общение с LLM, не слишком долго ожидая.
Конфигурация системы:
- AMD Райзен 5800H
- 32 ГБ ОЗУ
Инструкция командной строки:
./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
Затем мы протестировали на мини-ПК Intel и достигли скорости около 1,5 токенов в секунду. Это слишком медленно для плодотворного сеанса чата. Сравнение некорректное, поскольку Intel N5105 явно слабее AMD 5800H. Но это единственный мини-ПК Intel, который у меня есть. Если вы используете более мощный процессор Intel (например, Core i5-1135G7), вы должны получить сопоставимые результаты. Пожалуйста, сообщите о своих выводах в комментариях ниже.
Конфигурация системы:
- 4 ядра 11-го поколения N5105 (до 2,9 ГГц), 4 ядра и 4 потока
- 16 ГБ ОЗУ (2 ГБ видеопамяти для iGPU)
./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
Тест стабильной диффузии 1.5
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
Тест 1
- Подсказка: «лошадь в лесу».
- Шаги: 20, Сэмплер: DDIM, Масштаб CFG: 7, Начальное число: 519288240, Размер: 512x512, Хэш модели: 6ce0161689, Модель: v1-5-pruned-emaonly, Версия: v1.6.0
- Затраченное время: 1 мин. 8,3 сек.
Тест стабильной диффузии XL 1.0
SDXL (максимальное разрешение 1024x1024) рекомендует иметь как минимум 12 ГБ видеопамяти, поэтому вам обязательно необходимо выполнить шаг «Подготовка 1», чтобы выделить 16 ГБ видеопамяти для iGPU. Итак, эта задача возможна только с мини-ПК за 400 долларов.
./webui.sh --upcast-sampling
Тест 1:
- Подсказка: «лошадь в лесу».
- Шаги: 20, Сэмплер: DDIM, Масштаб CFG: 7, Начальное значение: 1102941451, Размер: 1024x768, Хэш модели: 31e35c80fc, Модель: sd_xl_base_1.0, Версия: v1.6.0
- Затраченное время: 7 мин. 41 секунда
Тест 2:
- Подсказка: «Молодая Тейлор Свифт в красной толстовке верхом на лошади в лесу»
- Отрицательная подсказка: уродства, деформация, деформированные глаза, деформированные зубы, деформированные пальцы, деформированное лицо, деформированные руки, деформированные.
- Шаги: 20, Сэмплер: DDIM, Масштаб CFG: 7, Начальное значение: 2960206663, Размер: 1024x1024, Хэш модели: 31e35c80fc, Модель: sd_xl_base_1.0, Версия: v1.6.0
- Затраченное время: 6 мин. 12,3 сек.
Windows 11 и AMD/директмл
Хотя эта статья посвящена операционным системам Linux, вы можете заставить Stable Diffusion работать и в Windows. Вот мои эксперименты:
- Сначала вам необходимо установить Python 3.10.6.
- Добавьте директор Python 3.10.6 в PATH.
- Важно: путь Python должен быть верхним.
- https://realpython.com/add-python-to-path/
- Установите git и репозиторий клонов git
- Запустите webui-user.bat из проводника.
Тест 1:
- Подсказка: «лошадь в лесу».
- Настройки: DPM++ 2M Karras, 512x512, шагов выборки 20.
- Затраченное время: 1м19с
Выводы
Итак, вам нравится запускать собственные генеративные модели искусственного интеллекта на новом мини-ПК за 300 долларов? Я надеюсь, что да.
Модели искусственного интеллекта с открытым исходным кодом, работающие на персональных устройствах, — одна из самых интересных областей для специалистов, поскольку ни у кого из нас не будет огромного пула графических процессоров для обучения базовой модели. Это позволит создать новое поколение приложений, которые будут одновременно очень умными и при этом сохранят конфиденциальность наших данных.
Что дальше?
- Запустите его на встроенных устройствах даже меньшего размера: например, Raspberry Pi.
- Запустите его на своих смартфонах (llama.cpp поддерживает iOS и Android).
И удачи в работе с искусственным интеллектом, открытым исходным кодом и возможностью установки на устройстве!