Эльбрус/нейросети: различия между версиями

Материал из ALT Linux Wiki
м (+ссылки на статьи автора на habr)
м (вычитка, викификация)
 
Строка 1: Строка 1:
__TOC__
__TOC__
<h1>ggml</h1>
= ggml =
<div>
ggml тензорная библиотека для машинного обучения. В примере ниже используется для работы llama (Large Language Model). Большое спасибо Илье Курдюкову за проделанные [[эльбрус/оптимизация|оптимизации]] под Эльбрус.
ggml - Это тензорная библиотека для машинного обучения. В примере ниже используется для работы llama (Large Language Model). Большое спасибо Илье Курдюкову за проделанные оптимизации под Эльбрус. См. тж. статьи: [http://habr.com/ru/articles/729448/], [http://habr.com/ru/articles/732508/]
 
</div>
<div>
Для работы с ggml и llama.cpp необходимо выполнить следующие действия:
Для работы с ggml и llama.cpp необходимо выполнить следующие действия:
</div>
git clone https://github.com/alexmihalyk23/llama.cpp-e2k
<pre>git clone https://github.com/alexmihalyk23/llama.cpp-e2k
cd llama.cpp-e2k
cd llama.cpp-e2k
make -j8
make -j8</pre>
<div>Для загрузки необходимой модели можно воспользоваться скриптом:</div>
<pre>./download-koala.sh</pre>
<div>Для тестового диалога можно воспользоваться следующей командой, которая запустит чат-бота</div>
<pre>./alpaca.sh</pre>


<h1>ncnn</h1>
Для загрузки необходимой модели можно воспользоваться скриптом:
<div>
./download-koala.sh
ncnn - Это высокопроизводительный фреймворк нейросетевого вывода, оптимизированный для мобильной платформы. Также данный фреймворк поддерживает vulkan что позволяет запускать нейросети на видеокартах AMD.  
 
</div>
Для тестового диалога можно воспользоваться следующей командой, которая запустит чат-бота:
./alpaca.sh
 
= ncnn =
ncnn — высокопроизводительный фреймворк нейросетевого вывода, оптимизированный для мобильной платформы. Также данный фреймворк поддерживает vulkan, что позволяет запускать нейросети на видеокартах AMD.  


<div>
Для установки необходимо выполнить следующие действия:
Для установки необходимо выполнить следующие действия:
</div>
git clone https://github.com/Tencent/ncnn.git
<pre>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
 
</pre>
На данный момент не реализованна поддержка многопоточности под Эльбрус.
<div>На данный момент не реализованна поддержка многопоточности под Эльбрус</div>


Если хотите запустить пример с работой нейронной сети yolov3 то можно выполнить следующие действия:
Если хотите запустить пример с работой нейронной сети <tt>yolov3</tt>, можно выполнить следующие действия (из папки {{path|build}} перейдите в папку {{path|examples}}):


из папки 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


<pre>
Может возникнуть ошибка <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>:
cd examples
$EDITOR ../../examples/yolov3.cpp
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
</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')                                 
Для запуска теста можно запустить следующий тест:
cd ../examples
../build/examples/squeezenet ../images/256-ncnn.png


Тогда можно перейти в ncnn/examples и закоментировать imwshow и waitKey(0), и заменить на cv::imwrite("image.png", image);
= Stable-Diffusion-NCNN =
<pre>
{{note|Для работы Stable-Diffusion необходимо установить ncnn}}
nano ../../examples/yolov3.cpp
Stable-Diffusion-NCNN — программное обеспечение с открытым исходным кодом, создающее изображения по текстовым описаниям. Данная реализация поддерживает vulkan благодаря работе с <tt>ncnn</tt>.
</pre>
                                                     
</pre>
<div>Для запуска теста можно запустить следующий тест:</div>
<pre>
cd ../examples
../build/examples/squeezenet ../images/256-ncnn.png
</pre>


<h1>Stable-Diffusion-NCNN</h1>
<div>'''Для работы Stable-Diffusion необходимо установить ncnn'''</div>
<div>
Stable-Diffusion-NCNN - Это  программное обеспечение, создающее изображения по текстовым описаниям, с открытым исходным кодом. Данная реализация поддерживает vulkan благодаря работе с ncnn.
</div>
<div>
Для установки необходимо выполнить следующие действия:  
Для установки необходимо выполнить следующие действия:  
</div>
<div>
<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>
</div>
<div>
Для работы с Stable-Diffusion необходимо скачать модели <tt>AutoencoderKL-fp16.bin, FrozenCLIPEmbedder-fp16.bin, UNetModel-MHA-fp16.bin, AutoencoderKL-encoder-512-512-fp16.bin</tt>.
[https://drive.google.com/drive/folders/1myB4uIQ2K5okl51XDbmYhetLF9rUyLZS Google Диск]
И поместить в папку assets, которая располагается в папке build.
</div>
<div>
Для запуска генерации можете выполнить <pre>./stable-diffusion-ncnn</pre>
<div>
Если хотите генерировать что-то свое, то можно изменить файл magic.txt (на странице [https://github.com/EdVince/Stable-Diffusion-NCNN#x86-windows github] есть более подробное описание)


</div>
Для работы с 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}}


<h1>waifu2x ncnn Vulkan</h1>
Если хотите генерировать что-то свое, то можно изменить файл {{path|magic.txt}} ([https://github.com/EdVince/Stable-Diffusion-NCNN#x86-windows более подробное описание])
Программа для апскейла изображений


'''Для работы waifu2x-ncnn-vulkan необходимо установить ncnn'''
= waifu2x ncnn Vulkan =
{{note|Для работы waifu2x-ncnn-vulkan необходимо установить ncnn}}
Программа для апскейла (upscale) изображений.


Для установки необходимо выполнить следующие действия:
Для установки необходимо выполнить следующие действия:
Строка 111: Строка 84:


Для запуска можно выполнить данную команду:
Для запуска можно выполнить данную команду:
<pre>
./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
</pre>


Данную программу можно использовать совместно с Stable-Diffusion-NCNN для увеличения сгенерированного изображения.
Данную программу можно использовать совместно со <tt>Stable-Diffusion-NCNN</tt> для увеличения сгенерированного изображения.


Если что-то было не понятно, можно посмотреть [https://www.youtube.com/watch?v=Su-in1cJ6oo видео-интсрукцию]
Если что-то было непонятно, можно посмотреть [https://www.youtube.com/watch?v=Su-in1cJ6oo видеоинструкцию].
</div>


= Ссылки =
= Ссылки =
* [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]]

Текущая версия от 11: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

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

Примечание: Для работы waifu2x-ncnn-vulkan необходимо установить ncnn

Программа для апскейла (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 для увеличения сгенерированного изображения.

Если что-то было непонятно, можно посмотреть видеоинструкцию.

Ссылки