Ollama con AMD RX6600
El hecho es que no le tengo especial cariño a la IA, sobre todo a las IAS en remoto. No obstante al Cesar lo que es del Cesar, la veo altamente útil para su utilización en programación. Simplemente hay que saber utilizarla. Y es donde los seres humanos hemos perdido el enfoque. Para el desarrollo de software que es a lo que me dedico ahora mismo, la forma más útil de utilizar la IA, siempre bajo mi perspectiva, es como "profesor"; es decir, para tener explicaciones de como funciona una clase, librería... o porqué se utilizan unas determinadas funciones o métodos.
Lo que realmente no tolero, es la utilización que hacemos para que nos haga apps o programas sin ni siquiera saber como se llevan a cabo estos o como funciona ni siquiera el lenguaje que hay bajo el capó. Esto es lo peor que puede hacer el ser humano con su conocimiento, dejar de pensar.
Pero bueno, lo que venia diciendo, me parece interesante la utilización de un modelo de IA en local para utilizarlo como ayudante en programación y sin tener que depender de plataformas privadas en las que uno realmente no sabe uno donde acaban sus datos. Para poder ejecutar un modelo en local, bien necesitas una tarjeta gráfica (gpu) medio potente o una cpu con núcleos npu.
Mi gpu no es una de las tarjetas gráficas mas potentes del mundo y además no es muy compatible con las IAS (donde se lleva la palma nvidia y su núcleos cuda), pero haciendo alguna modificación en su identificación se puede hacer que rinda y por cierto bastante bien sobre todo con modelos pequeños.
Os dejo los pasos de configuración para un buen funcionamiento en archlinux, (en Ubuntu por ejemplo se realiza mediante la instalación de los drivers propietarios de amd y es un poco más engorroso). En archlinux y fedora es suficiente con la instalación de rocm, unas librerías encargadas de la función de la gpu para Inteligencia Artificial.
Al lío, en primer lugar instalación de las librerías rocm:
sudo pacman -S rocminfo rocm-opencl-sdk rocm-hip-sdk rocm-ml-sdk
Instalación de ollama con soporte para rocm:
sudo pacman -S ollama-rocm
Añadimos el usuario a render y video
sudo usermod -a -G render,video $USER
Editamos el archivo de entorno de ollama en systemd:
sudo systemctl edit ollama.service
Añadimos estas variables de entorno en la parte superior para que detecte la gráfica (no below).
[Service]
Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
## En el caso que tengas mas de una tarjeta de video habria que seleccionarla
# Environment="HIP_VISIBLE_DEVICES=1"
Recargamos el systemd y ollama
sudo systemctl daemon-reload
sudo systemctl restart ollama
Añadimos la variable a nuestro bash o zsh, que es mi caso:
echo 'export PATH=$PATH:/opt/rocm/bin' >> ~/.zshrc
source ~/.zshrc
Y ya está, tenemos nuestra grafica rx6600 (también vale para la rx5500), funcionando con un Inteligencia Artificial en local, os dejo el rendimiento de la IA con un modelo mediano de deepseek-coder de 3,8Gb
----------------------------------------------------
Model: deepseek-coder:6.7b
Performance Metrics:
Prompt Processing: 2584.99 tokens/sec
Generation Speed: 38.57 tokens/sec
Combined Speed: 45.81 tokens/sec
Workload Stats:
Input Tokens: 83
Generated Tokens: 434
Model Load Time: 0.03s
Processing Time: 0.03s
Generation Time: 11.25s
Total Time: 11.58s
----------------------------------------------------
Average stats:
----------------------------------------------------
Model: deepseek-coder:6.7b
Performance Metrics:
Prompt Processing: 2584.99 tokens/sec
Generation Speed: 38.57 tokens/sec
Combined Speed: 45.81 tokens/sec
Workload Stats:
Input Tokens: 83
Generated Tokens: 434
Model Load Time: 0.03s
Processing Time: 0.03s
Generation Time: 11.25s
Total Time: 11.58s
----------------------------------------------------
Y este con un modelo mas pequeño, con unas velocidades mas que buenas:
----------------------------------------------------
Model: deepseek-coder:1.3b
Performance Metrics:
Prompt Processing: 11296.10 tokens/sec
Generation Speed: 159.41 tokens/sec
Combined Speed: 188.48 tokens/sec
Workload Stats:
Input Tokens: 84
Generated Tokens: 453
Model Load Time: 0.08s
Processing Time: 0.01s
Generation Time: 2.84s
Total Time: 3.53s
----------------------------------------------------
Average stats:
----------------------------------------------------
Model: deepseek-coder:1.3b
Performance Metrics:
Prompt Processing: 11296.10 tokens/sec
Generation Speed: 159.41 tokens/sec
Combined Speed: 188.48 tokens/sec
Workload Stats:
Input Tokens: 84
Generated Tokens: 453
Model Load Time: 0.08s
Processing Time: 0.01s
Generation Time: 2.84s
Total Time: 3.53s
----------------------------------------------------
Gracias por la lectura y espero que le sirva a alguien más. Un saludo Bears!!