LLM sur IBM i via PASE — Sans Linux ni GPU

IBM i · Mars 2026

On a exécuté un LLM sur IBM i. Sans Linux. Sans cloud. Sans GPU.

llama.cpp compilé pour AIX tourne nativement sur IBM i via PASE. Vos programmes RPG peuvent appeler un LLM local sans infrastructure supplémentaire et sans envoyer vos données à l'extérieur.

Mars 20268 min de lecture

Si vous administrez un IBM i, vous connaissez bien la réponse habituelle quand quelqu'un pose la question de l'IA : « montez un LPAR Linux », « utilisez OpenAI », « regardez Wallaroo ». Toutes ces options impliquent de sortir de la plateforme, d'ajouter des couches, et à un moment ou un autre d'envoyer des données métier sur un serveur que vous ne contrôlez pas.

Il y a 150 000 systèmes IBM i qui traitent des transactions bancaires, d'assurance et de santé dans le monde. La réponse ne peut pas toujours être « ajoutez de l'infrastructure ». On a donc essayé autre chose.

L'expérience

Ce qu'on a fait exactement

On a pris llama.cpp — le moteur d'inférence LLM open source le plus utilisé — on l'a compilé pour AIX et copié le binaire sur une partition IBM i V7R5. On l'a exécuté via PASE. Ça a fonctionné du premier coup.

$ uname -a
OS400 WWW 5 7 007800001B91

$ /QOpenSys/pkgs/bin/python3 -c "import platform; print(platform.platform())"
OS400-5-007800001B91-powerpc-64bit

$ /QOpenSys/pkgs/bin/python3 -c "import sys; print('Byte order:', sys.byteorder)"
Byte order: big

IBM i V7R5 sur pub400.com — un système IBM i public. Big-endian, powerpc-64bit, OS400. Pas Linux, pas AIX. IBM i.

Le type de binaire

$ file llama/llama-simple
llama/llama-simple: 64-bit XCOFF executable or object module

Un binaire XCOFF 64 bits — le format exécutable natif d'AIX. Compilé sur AIX 7.3 POWER avec GCC 13.3 et les extensions vectorielles VSX. C'est le même binaire de notre projet llama-aix, qui distribue déjà 10 modèles GGUF big-endian sur HuggingFace.

Première exécution

$ LIBPATH=/home/HBSIXE/llama /home/HBSIXE/llama/llama-simple --help

example usage:

    /home/HBSIXE/llama/llama-simple -m model.gguf [-n n_predict] [prompt]

Le binaire charge, lie libggml et libllama, analyse les arguments et répond. Tout à l'intérieur de PASE. Pour lancer une vraie inférence, on lui passe un modèle GGUF big-endian :

$ LIBPATH=/home/HBSIXE/llama /home/HBSIXE/llama/llama-simple \
    -m models/tinyllama-1.1b-q4_k_m-be.gguf \
    -p "What is IBM i?" -n 100 -t 4
Terminal IBM i PASE exécutant llama.cpp : le binaire XCOFF charge, lie les bibliothèques et répond à un prompt en temps réel
Le contexte

Pourquoi ça a du sens pour un environnement IBM i

En 2026, la conversation sur l'IA dans la communauté IBM i est plus active que jamais. IBM vient de lancer Bob (le successeur de WCA for i), un assistant de codage pour les développeurs RPG. 70 % des clients IBM i prévoient des mises à jour matérielles cette année. Et pourtant, une question reste sans réponse claire :

Comment intégrer un modèle de langage dans mes applications IBM i sans dépendre d'un service externe ?

Les options habituelles aujourd'hui :

OptionCe que ça impliqueLe problème
LPAR LinuxMonter une partition séparée, y faire tourner le LLM, l'appeler depuis RPG via APIInfrastructure supplémentaire, coût additionnel, les données transitent entre partitions
API cloudAppeler OpenAI, Azure ou AWS depuis RPGLes données métier quittent la machine. Problème sérieux en banque, assurance, santé — et potentiellement incompatible avec le RGPD
WallarooL'option 1 packagée comme service500 $/mois. C'est toujours un LPAR Linux avec une étiquette
PASE + llama.cppLe LLM tourne directement dans IBM i via PASEPas de matériel supplémentaire. Les données ne quittent pas la partition.
Et IBM Bob ?
Bob est fait pour le développeur : il aide à comprendre, documenter et générer du code RPG depuis l'IDE. Ce qu'on décrit ici concerne l'application en production : un LLM qui tourne dans la même partition et que n'importe quel programme RPG peut appeler comme une simple API locale. Ce sont des outils complémentaires, pas concurrents.
RGPD et résidence des données

Pour les organisations belges et françaises soumises au RGPD, la question de la résidence des données est non négociable. Une inférence LLM qui s'exécute en local sur IBM i, sans aucun transfert vers un service cloud tiers, est par construction conforme sur ce point. Aucune donnée ne sort de votre infrastructure.

La base technique

PASE : le pont que vous aviez déjà

PASE (Portable Application Solutions Environment) est un environnement d'exécution intégré à IBM i qui exécute des binaires AIX de façon native. Ce n'est pas de l'émulation — c'est une couche qui expose les appels système AIX directement sur le noyau IBM i. Si quelque chose tourne sur AIX, ça peut tourner sur IBM i via PASE.

┌──────────────────────────────────────────┐ IBM i (OS400) │ ┌──────────────┐ ┌────────────────┐ │ │ │ RPG / CL │ │ PASE │ │ │ │ COBOL / Db2 │───→│ (AIX runtime) │ │ │ │ │ │ │ │ │ │ localhost │ │ llama-server │ │ │ │ :8080 │ │ + modèle GGUF │ │ │ └──────────────┘ └────────────────┘ │ IBM POWER Hardware └──────────────────────────────────────────┘

On compile et distribue des paquets AIX via le dépôt AIX de LibrePower depuis plusieurs années — plus de 30 paquets open source installables via DNF. Quand llama.cpp a rejoint le catalogue, tester le passage à IBM i était l'étape naturelle. PASE s'occupe du reste.

Pour les administrateurs IBM i

Vous n'avez rien de spécial à installer sur le système d'exploitation. PASE est déjà actif. Il vous faut seulement le binaire XCOFF de llama.cpp et un modèle GGUF big-endian. Le LLM tourne comme n'importe quel processus PASE, sans toucher à l'environnement natif IBM i.

L'obstacle technique

Le problème du big-endian (et comment on l'a résolu)

Il y a une raison pour laquelle personne n'avait fait ça proprement avant : l'ordre des octets. IBM i et AIX sont big-endian. La quasi-totalité des logiciels d'IA — x86, ARM, Linux ppc64le — suppose un ordre little-endian. Un fichier GGUF téléchargé directement depuis HuggingFace ne fonctionne pas sur IBM i : les octets sont dans le mauvais sens.

On avait déjà résolu ce problème dans notre travail sur AIX. La solution : convertir les modèles avant de les distribuer. On les publie sur huggingface.co/librepowerai, validés sur du vrai matériel AIX et prêts à être chargés directement dans IBM i PASE.

ModèleTailleQuantisation
TinyLlama 1.1B Chat668 MoQ4_K_M
LFM 1.2B Instruct695 MoQ4_K_M
LFM 1.2B Thinking731 MoQ4_K_M
7 autres modèles disponibles

Ce sont les mêmes modèles qui atteignent 10–12 tok/s sur AIX POWER. Sur IBM i POWER10 — avec l'accélération matérielle MMA active via OpenBLAS — les performances devraient être comparables ou meilleures. Les benchmarks concrets sur IBM i sont en cours de préparation.

De la PoC à la production

De la preuve de concept à la production

Exécuter --help prouve que le binaire charge. Le chemin réel vers quelque chose d'utile pour vos applications comporte trois étapes — et la première est déjà disponible.

Étape 1 : Inférence directe (disponible maintenant)

Depuis n'importe quelle session SSH ou QSH sur l'IBM i :

# Inférence en ligne de commande
LIBPATH=/chemin/vers/llama /chemin/vers/llama/llama-simple \
    -m /chemin/vers/modele.gguf \
    -p "Résume ce bon de commande" -n 200 -t 8

Utile pour les scripts CL, les jobs en batch, ou simplement pour vérifier que le modèle charge et répond correctement sur votre matériel avant d'aller plus loin.

Étape 2 : Serveur API compatible OpenAI (prochainement)

llama.cpp inclut llama-server, qui expose un endpoint HTTP compatible avec l'API OpenAI. Une fois actif dans PASE, n'importe quel programme RPG peut l'appeler via QSYS2.HTTP_POST — comme n'importe quelle autre API :

# Démarrer le serveur d'inférence sur IBM i via PASE
LIBPATH=/chemin/vers/llama /chemin/vers/llama/llama-server \
    -m /chemin/vers/modele.gguf \
    --host 0.0.0.0 --port 8080 -t 8
// Appel depuis RPG — le LLM est sur localhost
dcl-s url varchar(256) inz('http://localhost:8080/v1/chat/completions');
dcl-s corps varchar(65535);
dcl-s reponse varchar(65535);
// QSYS2.HTTP_POST — aucune donnée ne quitte IBM i

L'essentiel : localhost. Le modèle est sur la même machine. Les données ne quittent pas la partition.

Étape 3 : Intégration applicative métier (en développement)

  • Analyse de documents : passer des rapports Db2 au LLM pour générer des résumés automatiques
  • Requêtes en langage naturel : l'utilisateur écrit en français, le LLM renvoie du SQL
  • Modernisation du code RPG : le LLM analyse et documente les programmes existants sans quitter IBM i
  • Supervision intelligente : analyser les messages QSYSOPR et les journaux de travaux avec un contexte sémantique
Une note sur les performances : les petits modèles (1–2 milliards de paramètres) dans PASE sont largement suffisants pour la classification, le résumé, l'extraction de données structurées et les réponses à format fixe. Pour la génération de texte plus longue ou le raisonnement complexe, les modèles 7B+ scalent bien avec davantage de threads. Les benchmarks IBM i POWER10 sont en cours de préparation.
Hands-on

Comment l'essayer vous-même

Si vous avez accès à un IBM i avec PASE actif, c'est trois étapes.

1. Récupérer le binaire llama.cpp pour AIX

Disponible sur le GitLab de LibrePower. Si vous avez DNF/yum configuré :

# Depuis AIX (ou via PASE si vous avez dnf)
dnf install llama-cpp

2. Télécharger un modèle big-endian

curl -L -o tinyllama-be.gguf \
  "https://huggingface.co/librepowerai/TinyLlama-1.1B-Chat-v1.0-GGUF-big-endian/resolve/main/tinyllama-1.1b-q4_k_m-be.gguf"

TinyLlama est un bon point de départ : 668 Mo, chargement rapide, suffisant pour vérifier que tout fonctionne avant de passer à des modèles plus grands.

3. Lancer l'inférence

LIBPATH=/chemin/vers/llama ./llama-simple \
    -m tinyllama-be.gguf \
    -p "Qu'est-ce qu'IBM i ?" \
    -n 150 -t 4
Des systèmes IBM i en production ?

SIXE accompagne des organisations belges et françaises dans la gestion de leurs environnements IBM i depuis des années. Si vous voulez évaluer si cette approche correspond à votre architecture — ou comprendre ce qu'elle implique pour vos applications RPG — contactez-nous, sans engagement.

Feuille de route

La suite

C'est une preuve de concept solide, pas un produit fini. Voici ce qu'on prévoit de faire ensuite :

  • llama-server sur IBM i — le serveur API HTTP dans PASE, documenté et packagé pour que vous puissiez le lancer en quelques minutes
  • Exemples d'intégration RPG — du vrai code d'appel au LLM depuis des programmes RPG via QSYS2.HTTP_POST
  • Benchmarks IBM i POWER10/POWER11 — des mesures réelles de tok/s avec PASE sur du matériel de production
  • Modèles plus grands — tests avec des modèles 7B+ sur des partitions avec suffisamment de mémoire
  • vLLM pour IBM i — notre paquet vLLM pour ppc64le, adapté pour tourner dans PASE

Autres projets LibrePower

ProjetCe qu'il fait
llama-aixllama.cpp pour AIX avec 10 modèles GGUF big-endian prêts à télécharger
linux.librepower.orgDépôt APT avec vLLM pour Linux ppc64le (Ubuntu/Debian)
aix.librepower.orgPlus de 30 paquets open source pour AIX, installables via DNF

IBM i avec PASE ?

Testez le LLM sur votre propre partition

Le binaire est sur GitLab. Les modèles sont sur HuggingFace. Si vous avez accès à PASE et quelques minutes, vous pouvez reproduire exactement ce qu'on décrit ici :)

SIXE