|
1 | | -# LLM Service (Python) |
| 1 | +# LLM Service (Python) đ§ |
2 | 2 |
|
3 | | -See detailed notes in repo: ../../docs/services/python-llm.md |
| 3 | +Notes sur le service LLM Python. Pour les détails approfondis, consulter aussi: ../../docs/services/python-llm.md |
4 | 4 |
|
5 | | -Key points |
6 | | -- Provides LLM capabilities consumed by the backend. |
7 | | -- Prefer running via Docker Compose for consistency. |
| 5 | +## RĂŽle |
| 6 | +- Fournit des capacités de génération de texte (consommées par le backend Symfony). |
| 7 | +- Expose des métriques Prometheus pour l'observabilité. |
| 8 | +- S'exécute en local via Docker Compose pour une cohérence d'environnement. |
| 9 | + |
| 10 | +## API HTTP attendue par le backend |
| 11 | +- Endpoint: `POST /generate/stream` |
| 12 | +- URL par défaut cÎté backend: `http://llm:8008/generate/stream` |
| 13 | + - Configurable via `LLM_URL` (compose/env) ou paramĂštre Symfony `llm_url`. |
| 14 | +- Client cÎté Symfony: `apps/symfony-back/src/Infrastructure/LLM/PythonLLMClient.php` |
| 15 | + - Utilise le streaming (HttpClientInterface avec `buffer: false`). |
| 16 | + |
| 17 | +Remarque: l'implémentation HTTP de l'endpoint n'est pas incluse dans les extraits visibles ici; assurez-vous que le service LLM répond bien sur ce chemin si utilisé en production. |
| 18 | + |
| 19 | +## CLI â GĂ©nĂ©ration rapide |
| 20 | +- Voir [LLM RNN CLI](LLM-RNN-CLI) pour générer du texte directement dans le conteneur `llm`. |
| 21 | +- Entrée: `python -m llm_rnn.generate` avec options `--ckpt`, `--seed`, `--chars`, `--temp`, `--top-k`, `--top-p`. |
| 22 | + |
| 23 | +## Tokenization |
| 24 | +- Modes pris en charge: byte-level (par défaut), legacy char-level, BPE. |
| 25 | +- Détails: [Tokenization](Tokenization) (modes, heuristiques, encode/decode). |
| 26 | + |
| 27 | +## Métriques Prometheus |
| 28 | +- Exposées par `services/llm/metrics_server.py` sur `/metrics`. |
| 29 | +- Port par défaut: `METRICS_PORT=9108` (voir compose.yaml -> service `llm`). |
| 30 | +- Exemple local: http://localhost:9108/metrics |
| 31 | + |
| 32 | +## Supervisor (processus) |
| 33 | +- Fichier: `services/llm/supervisor.py` |
| 34 | + - Lance le serveur de métriques dans un thread. |
| 35 | + - Maintient le conteneur vivant via une boucle idle. |
| 36 | +- Commande compose: `python services/llm/supervisor.py` |
| 37 | + |
| 38 | +## Répertoire modÚle & checkpoints |
| 39 | +- Volume: `./ckpts` (hÎte) monté en `/ckpts` (conteneur). |
| 40 | +- Chemin par défaut du checkpoint: `/ckpts/rnn.pt` (configurable via `CKPT_PATH`). |
| 41 | + |
| 42 | +## Fichiers clés (apps/python-llm) |
| 43 | +- `llm_rnn/generate.py` â CLI de gĂ©nĂ©ration (charge le ckpt, choisit le tokenizer, Ă©chantillonne via le modĂšle). |
| 44 | +- `llm_rnn/model.py` â dĂ©finition du modĂšle `CharRNN` et logique de sampling. |
| 45 | +- `llm_rnn/tokenizer.py` â tokenizer byte/legacy. |
| 46 | +- `llm_rnn/tokenizer_bpe.py` â tokenizer BPE (si ckpt entraĂźnĂ© avec BPE). |
| 47 | + |
| 48 | +Voir aussi: |
| 49 | +- [LLM RNN CLI](LLM-RNN-CLI) |
| 50 | +- [Backend-Symfony](Backend-Symfony) |
| 51 | +- [Architecture](Architecture) |
0 commit comments