Эльбрус/нейросети: различия между версиями
м (+ссылки на статьи автора на habr) |
м (вычитка, викификация) |
||
Строка 1: | Строка 1: | ||
__TOC__ | __TOC__ | ||
= ggml = | |||
ggml — тензорная библиотека для машинного обучения. В примере ниже используется для работы llama (Large Language Model). Большое спасибо Илье Курдюкову за проделанные [[эльбрус/оптимизация|оптимизации]] под Эльбрус. | |||
ggml | |||
Для работы с ggml и llama.cpp необходимо выполнить следующие действия: | Для работы с ggml и llama.cpp необходимо выполнить следующие действия: | ||
git clone https://github.com/alexmihalyk23/llama.cpp-e2k | |||
cd llama.cpp-e2k | |||
cd llama.cpp-e2k | make -j8 | ||
make -j8 | |||
Для загрузки необходимой модели можно воспользоваться скриптом: | |||
./download-koala.sh | |||
ncnn | |||
Для тестового диалога можно воспользоваться следующей командой, которая запустит чат-бота: | |||
./alpaca.sh | |||
= ncnn = | |||
ncnn — высокопроизводительный фреймворк нейросетевого вывода, оптимизированный для мобильной платформы. Также данный фреймворк поддерживает vulkan, что позволяет запускать нейросети на видеокартах AMD. | |||
Для установки необходимо выполнить следующие действия: | Для установки необходимо выполнить следующие действия: | ||
git clone https://github.com/Tencent/ncnn.git | |||
cd ncnn | |||
cd ncnn | git submodule update --init | ||
git submodule update --init | mkdir build && cd build | ||
mkdir build && cd build | cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DNCNN_VULKAN=ON .. | ||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DNCNN_VULKAN=ON .. | make -j8 | ||
make -j8 | sudo make install | ||
sudo make install | |||
На данный момент не реализованна поддержка многопоточности под Эльбрус. | |||
Если хотите запустить пример с работой нейронной сети yolov3 | Если хотите запустить пример с работой нейронной сети <tt>yolov3</tt>, можно выполнить следующие действия (из папки {{path|build}} перейдите в папку {{path|examples}}): | ||
cd examples | |||
make -j8 | |||
wget https://raw.githubusercontent.com/Qengineering/YoloV3-ncnn-Jetson-Nano/main/mobilenetv2_yolov3.param | |||
wget https://github.com/Qengineering/YoloV3-ncnn-Jetson-Nano/raw/main/mobilenetv2_yolov3.bin | |||
./yolov3 (изображение, на котором хотите запустить распознавание).png | |||
< | Может возникнуть ошибка <tt>opencv(The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage')</tt> — тогда можно перейти в {{path|ncnn/examples}} и закоментировать <tt>imwshow</tt> и <tt>waitKey(0)</tt>, заменив на <tt>cv::imwrite("image.png", image);</tt>: | ||
$EDITOR ../../examples/yolov3.cpp | |||
</ | |||
Для запуска теста можно запустить следующий тест: | |||
cd ../examples | |||
../build/examples/squeezenet ../images/256-ncnn.png | |||
= Stable-Diffusion-NCNN = | |||
< | {{note|Для работы Stable-Diffusion необходимо установить ncnn}} | ||
Stable-Diffusion-NCNN — программное обеспечение с открытым исходным кодом, создающее изображения по текстовым описаниям. Данная реализация поддерживает vulkan благодаря работе с <tt>ncnn</tt>. | |||
</ | |||
Для установки необходимо выполнить следующие действия: | Для установки необходимо выполнить следующие действия: | ||
<pre> | <pre> | ||
git clone https://github.com/EdVince/Stable-Diffusion-NCNN.git | git clone https://github.com/EdVince/Stable-Diffusion-NCNN.git | ||
Строка 80: | Строка 60: | ||
make -j8 | make -j8 | ||
</pre> | </pre> | ||
</ | Для работы с Stable-Diffusion необходимо [https://drive.google.com/drive/folders/1myB4uIQ2K5okl51XDbmYhetLF9rUyLZS скачать] модели <tt>AutoencoderKL-fp16.bin</tt>, <tt>FrozenCLIPEmbedder-fp16.bin</tt>, <tt>UNetModel-MHA-fp16.bin</tt>, <tt>AutoencoderKL-encoder-512-512-fp16.bin</tt>, и поместить их в папку {{path|assets}}, которая располагается в папке {{path|build}}. | ||
Для запуска генерации можете выполнить {{cmd|./stable-diffusion-ncnn}} | |||
Если хотите генерировать что-то свое, то можно изменить файл {{path|magic.txt}} ([https://github.com/EdVince/Stable-Diffusion-NCNN#x86-windows более подробное описание]) | |||
= waifu2x ncnn Vulkan = | |||
{{note|Для работы waifu2x-ncnn-vulkan необходимо установить ncnn}} | |||
Программа для апскейла (upscale) изображений. | |||
Для установки необходимо выполнить следующие действия: | Для установки необходимо выполнить следующие действия: | ||
Строка 111: | Строка 84: | ||
Для запуска можно выполнить данную команду: | Для запуска можно выполнить данную команду: | ||
./waifu2x-ncnn-vulkan -i input.png -o output.png -n 2 -s 2 | |||
./waifu2x-ncnn-vulkan -i input.png -o output.png -n 2 -s 2 | |||
Данную программу можно использовать совместно | Данную программу можно использовать совместно со <tt>Stable-Diffusion-NCNN</tt> для увеличения сгенерированного изображения. | ||
Если что-то было | Если что-то было непонятно, можно посмотреть [https://www.youtube.com/watch?v=Su-in1cJ6oo видеоинструкцию]. | ||
= Ссылки = | = Ссылки = | ||
* [http://habr.com/ru/articles/752138/ Нейронные сети на Эльбрусе] | * [http://habr.com/ru/articles/752138/ Нейронные сети на Эльбрусе] | ||
* Загоняем Альпаку на Эльбрус: [http://habr.com/ru/articles/729448/ часть первая], [http://habr.com/ru/articles/732508/ часть вторая] | |||
{{Category navigation|title=E2K|category=E2K|sortkey=*}} | {{Category navigation|title=E2K|category=E2K|sortkey=*}} | ||
[[Категория:E2K]] | [[Категория:E2K]] | ||
[[Категория:devel]] | [[Категория:devel]] |
Текущая версия от 14:01, 3 августа 2023
ggml
ggml — тензорная библиотека для машинного обучения. В примере ниже используется для работы llama (Large Language Model). Большое спасибо Илье Курдюкову за проделанные оптимизации под Эльбрус.
Для работы с ggml и llama.cpp необходимо выполнить следующие действия:
git clone https://github.com/alexmihalyk23/llama.cpp-e2k cd llama.cpp-e2k make -j8
Для загрузки необходимой модели можно воспользоваться скриптом:
./download-koala.sh
Для тестового диалога можно воспользоваться следующей командой, которая запустит чат-бота:
./alpaca.sh
ncnn
ncnn — высокопроизводительный фреймворк нейросетевого вывода, оптимизированный для мобильной платформы. Также данный фреймворк поддерживает vulkan, что позволяет запускать нейросети на видеокартах AMD.
Для установки необходимо выполнить следующие действия:
git clone https://github.com/Tencent/ncnn.git cd ncnn git submodule update --init mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DNCNN_VULKAN=ON .. make -j8 sudo make install
На данный момент не реализованна поддержка многопоточности под Эльбрус.
Если хотите запустить пример с работой нейронной сети yolov3, можно выполнить следующие действия (из папки build перейдите в папку examples):
cd examples make -j8 wget https://raw.githubusercontent.com/Qengineering/YoloV3-ncnn-Jetson-Nano/main/mobilenetv2_yolov3.param wget https://github.com/Qengineering/YoloV3-ncnn-Jetson-Nano/raw/main/mobilenetv2_yolov3.bin ./yolov3 (изображение, на котором хотите запустить распознавание).png
Может возникнуть ошибка opencv(The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage') — тогда можно перейти в ncnn/examples и закоментировать imwshow и waitKey(0), заменив на cv::imwrite("image.png", image);:
$EDITOR ../../examples/yolov3.cpp
Для запуска теста можно запустить следующий тест:
cd ../examples ../build/examples/squeezenet ../images/256-ncnn.png
Stable-Diffusion-NCNN
Stable-Diffusion-NCNN — программное обеспечение с открытым исходным кодом, создающее изображения по текстовым описаниям. Данная реализация поддерживает vulkan благодаря работе с ncnn.
Для установки необходимо выполнить следующие действия:
git clone https://github.com/EdVince/Stable-Diffusion-NCNN.git cd Stable-Diffusion-NCNN/x86/linux sed -i 's/net.opt.use_vulkan_compute = true/net.opt.use_vulkan_compute = false/' src/decoder_slover.cpp sed -i 's/net.opt.use_vulkan_compute = false/net.opt.use_vulkan_compute = true/' src/decoder_slover.cpp sed -i 's/net.opt.use_fp16_storage = false/net.opt.use_fp16_storage = true/' src/decoder_slover.cpp sed -i 's/net.opt.use_bf16_storage = true/net.opt.use_bf16_storage = false/' src/decoder_slover.cpp sed -i 's/net.opt.use_vulkan_compute = false/net.opt.use_vulkan_compute = true/' src/diffusion_slover.cpp mkdir build && cd build cmake .. make -j8
Для работы с Stable-Diffusion необходимо скачать модели AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin, AutoencoderKL-encoder-512-512-fp16.bin, и поместить их в папку assets, которая располагается в папке build.
Для запуска генерации можете выполнить ./stable-diffusion-ncnn
Если хотите генерировать что-то свое, то можно изменить файл magic.txt (более подробное описание)
waifu2x ncnn Vulkan
Программа для апскейла (upscale) изображений.
Для установки необходимо выполнить следующие действия:
git clone https://github.com/nihui/waifu2x-ncnn-vulkan cd waifu2x-ncnn-vulkan git submodule update --init --recursive mkdir build cd build cmake ../src cmake --build . -j 8
Для запуска можно выполнить данную команду:
./waifu2x-ncnn-vulkan -i input.png -o output.png -n 2 -s 2
Данную программу можно использовать совместно со Stable-Diffusion-NCNN для увеличения сгенерированного изображения.
Если что-то было непонятно, можно посмотреть видеоинструкцию.
Ссылки
- Нейронные сети на Эльбрусе
- Загоняем Альпаку на Эльбрус: часть первая, часть вторая