Programa
Hace poco escribí un artículo sobre cómo ejecutar LLMs con Python y Torchat. Torchchat es un marco flexible diseñado para ejecutar LLMs de forma eficiente en diversas plataformas de hardware. Realizar un LLM a nivel local ofrece varias ventajas, entre ellas:
- Acceso sin conexión: Como el modelo se ejecuta en nuestro dispositivo, no necesitamos estar conectados a Internet para utilizarlo.
- Privacidad: Como nosotros mismos ejecutamos el modelo, las indicaciones y los datos que introducimos siguen siendo privados.
- Coste: Podemos ejecutar el modelo gratuitamente.
Tras el reciente lanzamiento por parte de Facebook de Llama 3.2he decidido ampliar mi artículo anterior para enseñar cómo implementarlo en nuestros teléfonos móviles, centrándome en Android.
He aquí un resumen de alto nivel de lo que tenemos que hacer:
- Descarga los archivos del modelo, que son de libre acceso porque el modelo es de código abierto.
- Genera los archivos necesarios para ejecutar el modelo en un dispositivo móvil.
- Configura una aplicación de chat Android que ejecute el modelo.
Torchchat da respuesta a todos estos pasos. Dispone de comandos para descargar el modelo y generar los archivos necesarios para ejecutarlo. Además, viene con una aplicación Android de chat de demostración, por lo que no necesitamos crear una nosotros mismos.
Desarrollar aplicaciones de IA
Descargar Torchat
El primer paso es clonar el repositorio Torchchat utilizando Git:
git clone git@github.com:pytorch/torchchat.git
También podemos hacerlo sin Git descargándolo mediante el botón de descarga de GitHub:
Nota importante: Tras clonar (o descargar) el repositorio, quedará disponible en nuestro ordenador una carpeta llamada torchchat
. Todos los comandos mencionados en este artículo deben ejecutarse desde esa carpeta.
Instalación de Torchat
Supondremos que Python y Anaconda ya están instalados. Si no lo están, consulta estos dos tutoriales: Cómo instalar Anaconda en Windows y Cómo instalar Anaconda en Mac OS X.
Alternativamente, sigue los pasos del repositorio Torchchat, que utiliza un entorno virtual en lugar de Anaconda.
Comenzamos creando un entorno Anaconda mediante el comando:
conda create -yn llama python=3.10.0
Esto crea un entorno llamado llama
que utiliza la versión 3.10
de Python. La opción -yn
combina -y
y -n
:
- La opción
-y
permite que el comando proceda sin pedir confirmación antes de crear el entorno. - La opción
-n
especifica el nombre del entorno, que en este caso esllama
. Después de crear el entorno, lo activamos e instalamos las dependencias.
Para activarlo, utilizamos el siguiente comando:
conda activate llama
Para instalar las dependencias necesarias, utilizamos el script de instalación proporcionado por TorchChat:
./install/install_requirements.sh
Descargar el modelo Llama 3.2 1B
En este tutorial, utilizaremos el modelo Llama 3.2 1B, un modelo de mil millones de parámetros. Podemos descargarlo utilizando el comando
python torchchat.py download llama3.2-1b
El proceso es el mismo para experimentar con otros modelos:debemos sustituir llama3.2-1b
por el alias del modelo deseado. Es importante seleccionar sólo modelos marcados como aptos para móviles.
Torchchat aprovecha Hugging Face para la gestión de modelos. En consecuencia, para descargar un modelo es necesario tener una cuenta de Cara de Abrazo. Para una guía completa sobre cómo crear una cuenta e iniciar sesión desde el terminal, consulta la sección "Descargar un modelo" de este tutorial de Torchat.
Alternativamente, el modelo también puede descargarse del sitio web oficial de Llama. Sin embargo, utilizar Torchchat es más cómodo, ya que facilita la exportación de los archivos del modelo para su despliegue móvil.
Exportar el modelo
Para desplegar en un dispositivo móvil, primero exportamos el modelo para generar el artefacto.pte
, que es un archivo utilizado por Executorch. Executorch es el motor que Torchchat utiliza para ejecutar el LLM en un dispositivo móvil.
Para generar el archivo PTE, primero debemos instalar Executorch. Para ello, ejecuta los siguientes comandos:
export TORCHCHAT_ROOT=${PWD}
./torchchat/utils/scripts/install_et.sh
Una vez finalizada la instalación, podemos generar el archivo PTE utilizando el comando
python torchchat.py export llama3.2-1b --quantize torchchat/quant_config/mobile.json --output-pte-path llama3_2-1b.pte
Este comando también cuantizará el modelo, reduciendo su tamaño y aumentando la velocidad de inferencia. Utilizamos la configuración por defecto de Torchat en torchchat/quant_config/mobile.json
.
Cuando se complete este proceso, se creará un archivo llamado llama3_2-1b.pte
en la carpeta torchchat
.
Preparar la aplicación móvil
Torchchat ofrece una aplicación de demostración para Android que nos permite manejar Llama directamente en nuestros smartphones. Este proyecto de demostración se encuentra en la carpeta Torchat que se descargó. Su ruta relativa es torchchat/edge/android/torchchat
. Ten en cuenta que la primera referencia torchchat
de la ruta se refiere a una carpeta dentro del repositorio, no a la carpeta raíz del repositorio.
Descarga y configura la biblioteca Java
- Descarga el archivo
.aar
proporcionado por Torchchat. Contiene la biblioteca Java y la biblioteca JNI correspondiente, para crear y ejecutar la aplicación. - Navega hasta la carpeta directorio app:
torchchat/edge/android/torchchat/app/
- Crea un directorio llamado
libs
(si no existe ya). - Cambia el nombre del archivo descargado a
executorch.aar
y pégalo en la carpetalibs
.
Carga el proyecto Android en Android Studio
Descarga e instala Android Studio desde el sitio web oficial. Una vez finalizada la instalación, abre el proyecto:
El proyecto de demostración se encuentra en torchchat/edge/android/torchchat
.
Cuando abrimos el proyecto, nos aparece esta ventana preguntándonos si confiamos en el código:
Aquí, elige la opción "Confiar en el proyecto".
Tras abrir el proyecto, Android Studio necesitará algún tiempo para cargar la configuración y completar la configuración inicial. Es importante esperar a que termine este proceso. Podemos controlar el estado en la esquina inferior derecha de la ventana. Cuando esté listo, el botón de ejecución de la parte superior debería volverse verde:
Configurar el modo desarrollador en Android
Para poder ejecutar la aplicación en el teléfono a través de Android Studio, tenemos que activar el modo desarrollador en nuestro dispositivo. He aquí cómo podemos hacerlo:
- Ve a "Ajustes".
- Selecciona "Acerca del dispositivo" o "Acerca del teléfono".
- Abrir "Información del software"
- Busca el "Número de construcción" y púlsalo siete veces
Eso es. Ahora, podemos utilizar nuestro dispositivo para ejecutar la aplicación desde Android Studio. Al hacer esto, la aplicación permanecerá en nuestro teléfono, permitiéndonos ejecutarla incluso sin conexión al ordenador.
Instalar adb
La aplicación necesita que los archivos del modelo se encuentren en una carpeta específica del teléfono. Para enviar esos archivos al teléfono, utilizamos adb
(Android Debug Bridge). Podemos instalarlo utilizando Android Studio siguiendo estos pasos:
- Navega hasta los ajustes y empieza a escribir "Android SDK" en la barra de búsqueda
- Localiza el menú llamado "Android SDK" y haz clic en él
- Selecciona la opción "Herramientas de línea de comandos del SDK de Android (última versión)".
- Haz clic en "Aplicar" para instalarlo
Observa que en la parte superior de la ventana, Android Studio muestra la ubicación del sdk de Android:
Copiamos esa ruta y ejecutamos el siguiente comando (sustituyendo a continuación por la ruta que acabamos de copiar):
export PATH=$PATH:<android_skd_location>/platform-tools/
Para confirmar que adb
se ha instalado correctamente, utiliza el comando adb --version
, que mostrará la versión de adb.
Configurar la aplicación en el teléfono
Conecta el teléfono al ordenador con un cable. El nombre del dispositivo aparecerá en la lista de dispositivos junto al botón de ejecutar:
Antes de ejecutar la aplicación en el teléfono, ahora utilizamos adb
para copiar los archivos del modelo necesarios en nuestro dispositivo.
- Encuentra el id del dispositivo utilizando el comando
adb devices
. Puede haber varias líneas en la salida. Localiza el del formulario con el formularioy copia el código del dispositivo.
- Crea el directorio para almacenar los archivos del modelo utilizando
adb -s shell mkdir -p /data/local/tmp/llama
. - Copia el archivo
.pte
situado en la carpeta torchat conadb -s push llama3_2-1b.pte /data/local/tmp/llama
. - Localiza el archivo del tokenizador del modelo utilizando
python torchchat.py where llama3.2-1b
. Esto mostrará varias líneas, nos interesa la ruta mostrada en la última línea.
- Copia el archivo del tokenizador en el dispositivo utilizando
adb -s push /tokenizer.model /data/local/tmp/llama
sustituyendopor la ruta obtenida en el paso anterior.
Tras completar estos pasos, los archivos del modelo deberían estar en nuestro teléfono y listos para usar. Podemos comprobarlo enumerando todos los archivos que se encuentran en la carpeta del dispositivo que acabamos de crear:
adb -s <device_code> shell ls
La salida debe tener los dos archivos que acabamos de copiar:
llama3_2-1b.pte
tokenizer.model
Ejecutar la app
Ya está todo listo para ejecutar la aplicación de demostración en nuestro teléfono. Podemos hacer clic en la flecha verde para ejecutarlo.
Esto abrirá la aplicación en nuestro dispositivo. La aplicación nos pide que seleccionemos los archivos del modelo y del tokenizador.
Uso de la aplicación Llama 3.2 1B
¡Ya podemos empezar a chatear con Llama3.2 1B en nuestro teléfono! La interfaz de la aplicación es bastante simplista. Podemos utilizar el cuadro de texto "Aviso" para escribir un aviso y enviarlo al modelo mediante el botón "Generar".
Como el modelo funciona sin conexión, podría utilizarlo en el avión hacia mi próximo destino para pedir, por ejemplo, algunas recomendaciones de platos:
Con esta interacción, observamos algunas limitaciones de la aplicación de demostración:
- La respuesta repite nuestra indicación.
- El formato de la respuesta comienza con "He estado en Taiwán...", lo que indica que la aplicación no está diseñada para utilizar el modelo directamente como asistente.
- Las respuestas se cortan bruscamente, probablemente porque se ha alcanzado el límite de tokens.
Podemos comparar el comportamiento ejecutando el mismo modelo en el terminal con el comando
python torchchat.py chat llama3.2-1b
Proporcionamos el mismo estímulo para ver si el comportamiento era diferente. De hecho, en este caso, la respuesta parece mucho más natural y útil, a pesar de estar también cortada:
Me puse en contacto con el equipo de Torchchaty me dijeron que Llama 3.2 era demasiado reciente y que había que actualizar ligeramente la aplicación de demostración para que fuera compatible.
Sin embargo, el proceso de configuración seguirá siendo el mismo, y los conocimientos adquiridos aquí seguirán siendo válidos para la versión actualizada. Es posible que cuando estés leyendo este artículo, ya se haya actualizado y funcione correctamente.
Conclusión
En esta guía, aprendimos a configurar Llama 3.2 1B directamente en un dispositivo Android utilizando Torchat. Cubrimos el proceso paso a paso de descarga e instalación de los componentes necesarios, incluidos los archivos del modelo y la aplicación de demostración para Android.
Aunque la aplicación de demostración actual tiene algunas limitaciones, sobre todo en el formato y la longitud de las respuestas, el potencial subyacente de estas implementaciones es inmenso.
Si quieres leer más sobre Llama 3.2, te recomiendo estos blogs: