Cursus
Onlangs schreef ik een artikel over hoe je LLM’s uitvoert met Python en Torchchat. Torchchat is een flexibel framework dat is ontworpen om LLM’s efficiënt uit te voeren op verschillende hardwareplatforms. Een LLM lokaal draaien biedt verschillende voordelen, waaronder:
- Offline toegang: omdat het model op ons apparaat draait, hebben we geen internetverbinding nodig om het te gebruiken.
- Privacy: omdat we het model zelf draaien, blijven de prompts en data die we invoeren privé.
- Kosten: we kunnen het model gratis draaien.
Naar aanleiding van de recente release van Llama 3.2 heb ik besloten mijn vorige artikel uit te breiden om te laten zien hoe je het op je mobiele telefoon kunt deployen, met focus op Android.
Hier is een overzicht op hoofdlijnen van wat we moeten doen:
- Download de modelbestanden, die vrij beschikbaar zijn omdat het model open source is.
- Genereer de benodigde bestanden om het model op een mobiel apparaat te draaien.
- Zet een Android-chatapplicatie op die het model uitvoert.
Torchchat biedt een oplossing voor al deze stappen. Het heeft commando’s om het model te downloaden en de bestanden te genereren die nodig zijn om het te draaien. Daarnaast wordt er een demo-chatapp voor Android meegeleverd, zodat we er zelf geen hoeven te bouwen.
Torchchat downloaden
De eerste stap is het clonen van de Torchchat-repository met Git:
git clone git@github.com:pytorch/torchchat.git
Dit kan ook zonder Git door te downloaden via de downloadknop op GitHub:

Belangrijke opmerking: na het clonen (of downloaden) van de repository verschijnt er een map met de naam torchchat op onze computer. Alle commando’s in dit artikel moeten vanuit die map worden uitgevoerd.
Torchchat installeren
We gaan ervan uit dat Python en Anaconda al zijn geïnstalleerd. Zo niet, raadpleeg dan deze twee handleidingen: Anaconda installeren op Windows en Anaconda installeren op Mac OS X.
Je kunt ook de stappen volgen in de Torchchat-repository, die een virtuele omgeving gebruikt in plaats van Anaconda.
We beginnen met het aanmaken van een Anaconda-omgeving met het commando:
conda create -yn llama python=3.10.0
Hiermee maken we een omgeving met de naam llama die versie 3.10 van Python gebruikt. De optie -yn combineert -y en -n:
- De optie
-ylaat het commando doorgaan zonder bevestiging te vragen voordat de omgeving wordt aangemaakt. - De optie
-nspecificeert de naam van de omgeving, in dit gevalllama. Nadat de omgeving is aangemaakt, activeren we deze en installeren we de dependencies.
Om deze te activeren, gebruiken we het volgende commando:
conda activate llama
Voor het installeren van de benodigde dependencies gebruiken we het installatiescript dat door TorchChat wordt meegeleverd:
./install/install_requirements.sh
Het Llama 3.2 1B-model downloaden
In deze tutorial gebruiken we het Llama 3.2 1B-model, een model met één miljard parameters. We kunnen het downloaden met het commando:
python torchchat.py download llama3.2-1b
Het proces is hetzelfde om te experimenteren met andere modellen—we hoeven alleen llama3.2-1b te vervangen door de alias van het gewenste model. Het is belangrijk om alleen modellen te kiezen die als mobielvriendelijk zijn gemarkeerd.
Torchchat maakt gebruik van Hugging Face voor modelbeheer. Daarom is voor het downloaden van een model een Hugging Face-account vereist. Voor een uitgebreide gids over het aanmaken van een account en inloggen via de terminal, raadpleeg je de sectie “Een model downloaden” in deze Torchchat-tutorial.
Als alternatief kan het model ook worden gedownload via de officiële website van Llama. Het gebruik van Torchchat is echter handiger, omdat het het exporteren van de modelfiles voor mobiele deployment vereenvoudigt.
Het model exporteren
Voor deployment op een mobiel apparaat exporteren we eerst het model om het .pte-artefact te genereren, een bestand dat door Executorch wordt gebruikt. Executorch is de engine die Torchchat gebruikt om de LLM op een mobiel apparaat te draaien.
Om het PTE-bestand te genereren, moeten we eerst Executorch installeren. Voer hiervoor de volgende commando’s uit:
export TORCHCHAT_ROOT=${PWD}
./torchchat/utils/scripts/install_et.sh
Na de installatie kunnen we het PTE-bestand genereren met het commando:
python torchchat.py export llama3.2-1b --quantize torchchat/quant_config/mobile.json --output-pte-path llama3_2-1b.pte
Dit commando zal het model ook kwantiseren, waardoor de grootte kleiner wordt en de inferentiesnelheid toeneemt. We gebruiken de standaardconfiguratie van Torchchat in torchchat/quant_config/mobile.json.
Wanneer dit proces is voltooid, wordt er een bestand met de naam llama3_2-1b.pte aangemaakt in de map torchchat.
De mobiele app voorbereiden
Torchchat biedt een demo-app voor Android waarmee we Llama rechtstreeks op onze smartphone kunnen gebruiken. Dit demoproject staat in de Torchchat-map die je hebt gedownload. Het relatieve pad is torchchat/edge/android/torchchat. Let op: de eerste verwijzing naar torchchat in het pad verwijst naar een map in de repository, niet de hoofdmap van de repository.
De Java-bibliotheek downloaden en instellen
- Download het door Torchchat geleverde
.aar-bestand. Dit bevat de Java-bibliotheek en de bijbehorende JNI-bibliotheek om de app te bouwen en uit te voeren. - Navigeer naar de appmap:
torchchat/edge/android/torchchat/app/ - Maak een map met de naam
libs(als die nog niet bestaat) - Hernoem het gedownloade bestand naar
executorch.aaren plak het in de maplibs.
Het Android-project laden in Android Studio
Download en installeer Android Studio via de officiële website. Zodra de installatie is voltooid, open je het project:

Het demoproject bevindt zich op torchchat/edge/android/torchchat.
Wanneer we het project openen, verschijnt er een venster met de vraag of we de code vertrouwen:

Kies hier de optie “Trust Project”.
Na het openen heeft Android Studio wat tijd nodig om de configuratie te laden en de eerste setup te voltooien. Het is belangrijk om te wachten tot dit proces klaar is. Je kunt de status volgen rechtsonder in het venster. Zodra het klaar is, wordt de run-knop bovenaan groen:

Ontwikkelaarsmodus op Android inschakelen
Om de app via Android Studio op de telefoon te kunnen draaien, moeten we de ontwikkelaarsmodus op ons apparaat inschakelen. Zo doe je dat:
- Ga naar "Instellingen"
- Selecteer "Info over apparaat" of "Info over telefoon"
- Open “Software-informatie”
- Zoek het “Build-nummer” en tik er zeven keer op
Dat is alles! We kunnen nu ons apparaat gebruiken om de app vanuit Android Studio te draaien. Wanneer we dit doen, blijft de app op onze telefoon staan, zodat we hem ook zonder verbinding met de computer kunnen draaien.
adb installeren
De app heeft de modelbestanden nodig op een specifieke locatie op de telefoon. Om deze bestanden naar de telefoon te sturen, gebruiken we adb (Android Debug Bridge). We kunnen dit installeren met Android Studio door deze stappen te volgen:
- Ga naar de instellingen en typ “Android SDK” in de zoekbalk
- Zoek het menu “Android SDK” en klik erop
- Selecteer de optie “Android SDK command line tools (latest)”
- Klik op “Apply” om dit te installeren

Let op dat Android Studio bovenaan het venster de locatie van de Android SDK toont:

Kopieer dat pad en voer het volgende commando uit (vervang hieronder <android_skd_location> door het zojuist gekopieerde pad):
export PATH=$PATH:<android_skd_location>/platform-tools/
Om te bevestigen dat adb succesvol is geïnstalleerd, gebruik je het commando adb --version, dat de versie van adb toont.
De app op de telefoon instellen
Verbind de telefoon met een kabel met de computer. De naam van het apparaat verschijnt in de lijst met devices naast de run-knop:

Voordat we de app op de telefoon draaien, gebruiken we nu adb om de benodigde modelbestanden naar ons apparaat te kopiëren.
- Zoek de id van het apparaat met het commando
adb devices. Er kunnen meerdere regels in de output staan. Zoek de regel met de vorm<device_code>device en kopieer de device code. - Maak de map aan om de modelbestanden op te slaan met
adb -s <device_code> shell mkdir -p /data/local/tmp/llama. - Kopieer het
.pte-bestand dat in de torchchat-map staat metadb -s <device_code> push llama3_2-1b.pte /data/local/tmp/llama. - Zoek het tokenizer-bestand van het model met
python torchchat.py where llama3.2-1b. Dit geeft meerdere regels output; het pad in de laatste regel is voor ons relevant.
![]()
- Kopieer het tokenizer-bestand naar het apparaat met
adb -s <device_code> push <model_path>/tokenizer.model /data/local/tmp/llamaen vervang<model_path>door het pad uit de vorige stap.
Na deze stappen zouden de modelbestanden op onze telefoon moeten staan en klaar zijn voor gebruik. We kunnen dit controleren door alle bestanden te tonen in de map op het apparaat die we zojuist hebben aangemaakt:
adb -s <device_code> shell ls
De output zou de twee bestanden moeten bevatten die we zojuist hebben gekopieerd:
llama3_2-1b.pte
tokenizer.model
De app draaien
Alles is nu klaar om de demo-app op onze telefoon te draaien. Klik op de groene pijl om hem te starten.

Daarmee wordt de app op ons apparaat geopend. De app vraagt ons om de model- en tokenizerbestanden te selecteren.

De Llama 3.2 1B-app gebruiken
We kunnen nu beginnen met chatten met Llama3.2 1B op onze telefoon! De interface van de app is vrij eenvoudig. We kunnen het tekstvak “Prompt” gebruiken om een prompt te schrijven en die naar het model te sturen met de knop “Generate”.
Omdat het model offline draait, kon ik het in het vliegtuig naar mijn volgende bestemming gebruiken om bijvoorbeeld wat gerechtentips te vragen:

Bij deze interactie zien we een paar beperkingen van de demo-app:
- Het antwoord herhaalt onze prompt.
- De opmaak van het antwoord begint met “I’ve been to Taiwan…” wat aangeeft dat de app niet is ontworpen om het model direct als assistant te gebruiken.
- De reacties worden abrupt afgebroken, waarschijnlijk omdat de tokenlimiet is bereikt.
We kunnen het gedrag vergelijken door hetzelfde model in de terminal te draaien met het commando:
python torchchat.py chat llama3.2-1b
We hebben dezelfde prompt gegeven om te zien of het gedrag anders was. Inderdaad, in dit geval lijkt het antwoord veel natuurlijker en nuttiger, al wordt het ook afgebroken:

Ik heb contact opgenomen met het team achter Torchchat, en zij gaven aan dat Llama 3.2 nog te recent was en dat de demo-app licht moest worden bijgewerkt om dit te ondersteunen.
De setup blijft echter hetzelfde, en de kennis die je hier opdoet, is ook toepasbaar op de bijgewerkte versie. Het is mogelijk dat de app tegen de tijd dat je dit leest al is bijgewerkt en correct werkt.
Conclusie
In deze gids leerden we hoe je Llama 3.2 1B rechtstreeks instelt op een Android-apparaat met Torchchat. We hebben het stapsgewijze proces behandeld voor het downloaden en installeren van de benodigde componenten, waaronder de modelbestanden en de demo-Android-app.
Hoewel er enkele beperkingen zijn met de huidige demo-app, met name in antwoordopmaak en -lengte, is het onderliggende potentieel van dit soort implementaties enorm.
Wil je meer lezen over Llama 3.2? Dan raad ik deze blogs aan:

