Эльбрус/нейросети: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 33: | Строка 33: | ||
</pre> | </pre> | ||
<div>На данный момент не реализованна поддержка многопоточности под Эльбрус</div> | <div>На данный момент не реализованна поддержка многопоточности под Эльбрус</div> | ||
Если хотите запустить пример с работой нейронной сети yolov3 то можно выполнить следующие действия: | |||
из папки build перейдите в папку examples | |||
<pre> | |||
cd examples | |||
make -j8 | |||
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 | |||
</pre> | |||
Может возникнуть ошибка 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); | |||
<pre> | |||
nano ../../examples/yolov3.cpp | |||
</pre> | |||
</pre> | |||
<div>Для запуска теста можно запустить следующий тест:</div> | <div>Для запуска теста можно запустить следующий тест:</div> | ||
<pre> | <pre> | ||
Строка 96: | Строка 117: | ||
Данную программу можно использовать совместно с Stable-Diffusion-NCNN для увеличения сгенерированного изображения. | Данную программу можно использовать совместно с Stable-Diffusion-NCNN для увеличения сгенерированного изображения. | ||
Если что-то было не понятно, можно посмотреть [https://www.youtube.com/watch?v=Su-in1cJ6oo видео-интсрукцию] | |||
</div> | </div> | ||
{{Category navigation|title=E2K|category=E2K|sortkey=*}} | {{Category navigation|title=E2K|category=E2K|sortkey=*}} | ||
[[Категория:E2K]] | [[Категория:E2K]] | ||
[[Категория:devel]] | [[Категория:devel]] |
Версия от 14:31, 19 июня 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 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);
nano ../../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. Google Диск И поместить в папку assets, которая располагается в папке build.
./stable-diffusion-ncnn
Если хотите генерировать что-то свое, то можно изменить файл magic.txt (на странице github есть более подробное описание)
waifu2x ncnn Vulkan
Программа для апскейла изображений
Для работы waifu2x-ncnn-vulkan необходимо установить ncnn
Для установки необходимо выполнить следующие действия:
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 для увеличения сгенерированного изображения.
Если что-то было не понятно, можно посмотреть видео-интсрукцию