вступление Запуск моделей искусственного интеллекта с открытым исходным кодом локально на наших собственных компьютерах дает нам конфиденциальность, бесконечные возможности для работы и свободу от крупных корпораций. Это почти вопрос свободы слова. Однако для нас, у которых мало графических процессоров, собственный компьютер с искусственным интеллектом кажется дорогой мечтой. ? 3200 долларов, ой! ? 1850 долларов США; это больно, даже если ты сможешь его получить. ? Начиная с 1200 долларов, это все еще слишком много. Макбук М3 Макс Нвидиа 4090 Ноутбук Microsoft Surface 6 Что, если я скажу вам, что вы можете получить полезный компьютер с искусственным интеллектом за 300 долларов? Заинтересованы? Вам необходимо предоставить собственный монитор, клавиатуру и мышь. И вам нужно немного повозиться с операционной системой Linux, драйверами, промежуточным программным обеспечением и конфигурациями. Чтобы уточнить: мы НЕ говорим об «обучении» или «тонкой настройке» больших генеративных моделей ИИ. Мы сосредоточимся на том, как запускать LLM с открытым исходным кодом (большие языковые модели, такие как 7Б) локально, а также генерация изображений с помощью . Лама 2 Стабильная диффузия Теперь продолжим. Что делает хороший (и дешевый) компьютер с искусственным интеллектом? Давайте предположим, что один из основных вариантов использования домашнего компьютера с искусственным интеллектом — это работа. или вывод LLM. Для этой задачи вообще не требуется графический процессор, поскольку все можно выполнить с помощью процессора. это программное обеспечение с открытым исходным кодом, которое обеспечивает очень быстрый вывод LLM с использованием обычного процессора. Первоначально он был разработан для Macbook с процессором Apple серии M, но работает и с процессорами Intel/AMD. большие языковые модели лама.cpp Однако для более высокой скорости вывода вам необходимо следующее. В противном случае вы будете словно наблюдать, как волосы растут на вашей ладони, в то время как 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 долларов. Я не хочу рекламировать какой-либо конкретный бренд, поэтому вы можете поискать сами: 5800H (8C/16T, до 4,4 ГГц) AMD Райзен 7 16 ГБ ОЗУ DDR4 (рекомендуется 32 ГБ) Твердотельный накопитель NVME M.2 емкостью 512 ГБ Я немного потратился и выбрал модель за 400 долларов с 32 ГБ ОЗУ и SSD на 1 ТБ (при прочих равных условиях). Основная причина в том, что я исследую LLM с открытым исходным кодом и хотел бы запускать более крупные модели в дополнение к Stable Difusion. Но вы сможете сделать почти все, что описано в этой статье, на компьютере стоимостью 300 долларов. Подготовка 1. Выделите достаточно памяти iGPU Для APU AMD, таких как , память распределяется между ЦП и iGPU (встроенным графическим процессором). В моем случае всего у меня 32 ГБ ОЗУ, но по умолчанию для iGPU было выделено всего 3 ГБ! Это зависит от компьютера и настраивается в BIOS во время производства. Райзен 7 5800H Вам нужно изменить это в зависимости от вашего основного варианта использования: Если вам нужно только запустить вывод LLM, вы можете пропустить весь этот подготовительный шаг. Поскольку для вывода LLM потребуется использовать только ЦП, и вам следует сохранить большую часть оперативной памяти для ЦП, чтобы можно было запускать более крупные модели LLM. Если вам нужно бежать , особенно (1024x1024), вам необходимо выделить для iGPU столько ОЗУ, сколько позволяет система (обычно половина от общего объема ОЗУ) Стабильная диффузия SDXL В моем случае я хочу запустить вывод Stable Diffusion XL и LLM на одном мини-ПК. Поэтому я хотел бы выделить 16 ГБ (из 32 ГБ) для графического процессора. Добиться этого можно, изменив настройки в BIOS. Обычно существует верхний предел, и настройка по умолчанию может быть намного ниже верхнего предела. На моем компьютере верхний предел составлял 16 ГБ или половину всей доступной оперативной памяти. Хороший биос Если BIOS вашего компьютера поддерживает такие настройки, измените их на желаемое число. В моем биосе такой настройки нет. Плохой BIOS: используйте универсальный инструмент AMD Если в вашем BIOS нет этой настройки, следуйте удобной инструкции «Разблокировка распределения памяти графического процессора на APU AMD Ryzen™?» Уинстон Ма. Я попробовал, и все сработало, так что теперь у меня 16 ГБ видеопамяти. https://winstonhyypia.medium.com/amd-apu-how-to-modify-the-dedicated-gpu-memory-e27b75905056 Подготовка 2. Установите драйверы и промежуточное ПО Выровнять звезды AMD (платформа Radeon Open Compute), сравнимая с платформой Nvidia , представляет собой набор драйверов и промежуточного программного обеспечения, позволяющий разработчикам использовать мощь графических процессоров ADM. И обычно приложениям искусственного интеллекта требуется ROCm для ускорения графического процессора. РПЦм КУДА Чтобы установить и заставить AMD ROCm работать, вы должны убедиться, что версии аппаратного обеспечения графического процессора, дистрибутива Linux, ядра, Python, драйвера HIP, библиотеки ROCm и pytorch совместимы. Если вы хотите минимум боли и максимальную вероятность успеха с первого раза, придерживайтесь рекомендуемых и проверенных комбинаций. Предварительное условие Пожалуйста, перейдите по следующей ссылке, чтобы получить совместимые версии ОС и ядра Linux и установить их. Первоначально я совершил ошибку, просто установив свою любимую ОС Linux и ядро Linux по умолчанию, и мне было очень трудно вернуться назад, чтобы решить проблемы совместимости. Вы можете избежать этой боли, просто используя официально поддерживаемые комбинации. https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html Установка РОКм https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html Если вся установка завершится успешно, вы можете ввести и отобразится что-то вроде этого (я вырезал только самые важные части, выделенные желтым цветом): 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 Пайторч https://pytorch.org/get-started/locally/ 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. https://rocm.docs.amd.com/en/latest/how_to/pytorch_install/pytorch_install.html#test-the-pytorch-installation python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure' Success python3 -c 'import torch; print(torch.cuda.is_available())' True Вывод LLM Давайте начнем с чего-то простого для нашего недавно сконфигурированного компьютера с искусственным интеллектом стоимостью 300 долларов: локального запуска большой языковой модели. Мы можем выбрать один из популярных режимов с открытым исходным кодом: с параметрами 7B, оптимизированными для чата. ЛЛАМА 2 Кроме того, вы также можете попробовать небольшие LLM от , , , и . Больше качественных LLM можно найти здесь, в очень полезной «таблице лидеров арены чат-ботов» Калифорнийского университета в Беркли. . Мистраль КВэнь Зефир Викунья лаборатории ЛМСИС https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard Лама.cpp Мы будем использовать , который изначально оптимизирован для процессора, а затем поддерживает и графический процессор. По моему опыту, вывод LLM хорошо работает на ЦП, и от скромного графического процессора, такого как тот, который встроен в машину искусственного интеллекта стоимостью 300 долларов, мало что можно выиграть. лама.cpp https://github.com/ggerganov/llama.cpp Сначала вам нужно установить и . Затем следуйте инструкциям по компиляции и установке llama.cpp. wget git 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 ГБ ОЗУ. Кроме того, формат файла должен быть . Так. в нашем примере вам необходимо скачать веса в этом файле: ггуф https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q4_0.gguf Тестирование на мини-ПК 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) Стабильная диффузия Монтаж https://github.com/AUTOMATIC1111/stable-diffusion-webui Также обратите внимание на эту страницу, касающуюся AMD ROCm. https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs Быстрый старт 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. Вот мои эксперименты: https://github.com/lshqqytiger/stable-diffusion-webui-directml Сначала вам необходимо установить 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). И удачи в работе с искусственным интеллектом, открытым исходным кодом и возможностью установки на устройстве!