- Complete MODELS.md with detailed model descriptions - Interactive download script for 5+ specialized SDXL models - Updated README with model selection guide - Fix docker-compose volumes path (/root/ComfyUI) - API workflows for OpenWebUI integration Models documented: - RealVisXL (portraits) - Juggernaut XL (versatile) - DreamShaper (art/fantasy) - SDXL Lightning (fast) - Proteus (realism)
4768 lines
227 KiB
Markdown
4768 lines
227 KiB
Markdown
<img src="https://r2cdn.perplexity.ai/pplx-full-logo-primary-dark%402x.png" style="height:64px;margin-right:32px"/>
|
||
|
||
# effi@effi-server:~/effi\$ docker logs open-webui --tail 20 -f
|
||
|
||
2026-02-21 16:41:16.787 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config HTTP/1.1" 200
|
||
2026-02-21 16:41:16.789 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200
|
||
2026-02-21 16:41:16.841 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/groups/ HTTP/1.1" 200
|
||
2026-02-21 16:41:16.842 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/webhook HTTP/1.1" 200
|
||
2026-02-21 16:41:16.844 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config HTTP/1.1" 200
|
||
2026-02-21 16:41:16.844 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config/ldap/server HTTP/1.1" 200
|
||
2026-02-21 16:41:16.875 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/groups/ HTTP/1.1" 200
|
||
2026-02-21 16:41:16.875 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200
|
||
2026-02-21 16:41:16.893 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/admin/config/ldap HTTP/1.1" 200
|
||
2026-02-21 16:41:16.909 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/version/updates HTTP/1.1" 200
|
||
2026-02-21 16:41:16.994 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/version/updates HTTP/1.1" 200
|
||
2026-02-21 16:41:30.169 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/audio/config HTTP/1.1" 200
|
||
2026-02-21 16:41:30.191 | ERROR | open_webui.routers.audio:get_available_voices:1304 - Error fetching voices from custom endpoint: 404 Client Error: Not Found for url: [http://192.168.1.27:8100/v1/audio/voices](http://192.168.1.27:8100/v1/audio/voices)
|
||
2026-02-21 16:41:30.194 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/audio/voices HTTP/1.1" 200
|
||
2026-02-21 16:41:30.207 | ERROR | open_webui.routers.audio:get_available_models:1256 - Error fetching models from custom endpoint: 404 Client Error: Not Found for url: [http://192.168.1.27:8100/v1/audio/models](http://192.168.1.27:8100/v1/audio/models)
|
||
2026-02-21 16:41:30.209 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/audio/models HTTP/1.1" 200
|
||
2026-02-21 16:41:39.093 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 16:42:39.091 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 16:43:39.094 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 16:44:39.094 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
|
||
L'URL est déjà en `http://` correct (pas de `Https`). Le vrai problème est visible dans les logs :
|
||
|
||
```
|
||
404 Not Found for url: http://192.168.1.27:8100/v1/audio/voices
|
||
404 Not Found for url: http://192.168.1.27:8100/v1/audio/models
|
||
```
|
||
|
||
**`openedai-speech` ne supporte pas ces endpoints** — Open WebUI les cherche mais ils n'existent pas dans openedai-speech. Ce n'est pas bloquant pour la synthèse elle-même, mais ça explique pourquoi Open WebUI ne trouve pas les voix disponibles.
|
||
|
||
## Le vrai problème : voix `nova` inexistante
|
||
|
||
openedai-speech utilise des voix locales (piper/kokoro), pas les voix OpenAI. `nova` n'existe probablement pas. Vérifie les voix disponibles :
|
||
|
||
```bash
|
||
ls ~/effi/tts-voices/
|
||
```
|
||
|
||
Et teste avec une voix qui existe vraiment :
|
||
|
||
```bash
|
||
curl -s http://192.168.1.27:8100/v1/audio/speech \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"tts-1","input":"Bonjour je suis Effi","voice":"alloy"}' \
|
||
--output /tmp/test_alloy.mp3 && \
|
||
echo "$(du -h /tmp/test_alloy.mp3)"
|
||
```
|
||
|
||
Les voix par défaut d'openedai-speech sont : `alloy`, `echo`, `fable`, `onyx`, `nova`, `shimmer` — mais elles sont mappées vers des modèles locaux. Si le dossier `tts-voices` est vide, aucune voix ne fonctionnera.
|
||
|
||
```bash
|
||
# Vérifie aussi la config
|
||
ls ~/effi/tts-config/
|
||
cat ~/effi/tts-config/voice_to_speaker.yaml 2>/dev/null || echo "Pas de config"
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# ^Ceffi@effi-server:~/effils ~/effi/tts-voices/s/
|
||
|
||
alloy.wav en_GB-northern_english_male-medium.onnx.json fable.wav onyx.wav
|
||
echo.wav en_US-libritts_r-medium.onnx hub shimmer.wav
|
||
en_GB-northern_english_male-medium.onnx en_US-libritts_r-medium.onnx.json nova.wav voices.json
|
||
effi@effi-server:~/effi\$ curl -s [http://192.168.1.27:8100/v1/audio/speech](http://192.168.1.27:8100/v1/audio/speech) \\
|
||
-H "Content-Type: application/json" \\
|
||
-d '{"model":"tts-1","input":"Bonjour je suis Effi","voice":"alloy"}' \\
|
||
--output /tmp/test_alloy.mp3 \&\& \\
|
||
echo "$(du -h /tmp/test_alloy.mp3)"
|
||
12K /tmp/test_alloy.mp3
|
||
effi@effi-server:~/effi$ \# Vérifie aussi la config
|
||
ls ~/effi/tts-config/
|
||
cat ~/effi/tts-config/voice_to_speaker.yaml 2>/dev/null || echo "Pas de config"
|
||
pre_process_map.yaml voice_to_speaker.yaml
|
||
tts-1:
|
||
some_other_voice_name_you_want:
|
||
model: voices/choose your own model.onnx
|
||
speaker: set your own speaker
|
||
alloy:
|
||
model: voices/en_US-libritts_r-medium.onnx
|
||
speaker: 79 \# 64, 79, 80, 101, 130
|
||
echo:
|
||
model: voices/en_US-libritts_r-medium.onnx
|
||
speaker: 134 \# 52, 102, 134
|
||
echo-alt:
|
||
model: voices/en_US-ryan-high.onnx
|
||
speaker: \# default speaker
|
||
fable:
|
||
model: voices/en_GB-northern_english_male-medium.onnx
|
||
speaker: \# default speaker
|
||
onyx:
|
||
model: voices/en_US-libritts_r-medium.onnx
|
||
speaker: 159 \# 55, 90, 132, 136, 137, 159
|
||
nova:
|
||
model: voices/en_US-libritts_r-medium.onnx
|
||
speaker: 107 \# 57, 61, 107, 150, 162
|
||
shimmer:
|
||
model: voices/en_US-libritts_r-medium.onnx
|
||
speaker: 163
|
||
tts-1-hd:
|
||
alloy-alt:
|
||
model: xtts
|
||
speaker: voices/alloy-alt.wav
|
||
alloy:
|
||
model: xtts
|
||
speaker: voices/alloy.wav
|
||
echo:
|
||
model: xtts
|
||
speaker: voices/echo.wav
|
||
fable:
|
||
model: xtts
|
||
speaker: voices/fable.wav
|
||
onyx:
|
||
model: xtts
|
||
speaker: voices/onyx.wav
|
||
nova:
|
||
model: xtts
|
||
speaker: voices/nova.wav
|
||
shimmer:
|
||
model: xtts
|
||
speaker: voices/shimmer.wav
|
||
me:
|
||
model: xtts_v2.0.2 \# you can specify an older xtts version
|
||
speaker: voices/me.wav \# this could be you
|
||
language: auto
|
||
enable_text_splitting: True
|
||
length_penalty: 1.0
|
||
repetition_penalty: 10
|
||
speed: 1.0
|
||
temperature: 0.75
|
||
top_k: 50
|
||
top_p: 0.85
|
||
comment: You can add a comment here also, which will be persistent and otherwise ignored.effi@effi-server:~/effi\$
|
||
|
||
Les voix sont bien configurées et le TTS génère des fichiers MP3. Le problème vient d'ailleurs — **le fichier MP3 généré par effi-server ne peut pas être lu par ton navigateur** car le J5040 utilise piper (voix anglaises uniquement), et `nova` parle anglais même si le texte est en français.
|
||
|
||
Mais le vrai souci pour la communication vocale complète : **vérifie si Open WebUI lit bien le MP3 en retour**. Télécharge le fichier test et écoute-le :
|
||
|
||
```bash
|
||
# Depuis effi-server, génère un test en français
|
||
curl -s http://192.168.1.27:8100/v1/audio/speech \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"tts-1-hd","input":"Bonjour, je suis Effi, ton assistante personnelle !","voice":"nova"}' \
|
||
--output /tmp/test_nova_hd.mp3 && \
|
||
echo "$(du -h /tmp/test_nova_hd.mp3)"
|
||
```
|
||
|
||
`tts-1-hd` avec `nova` utilise **XTTS** qui supporte le français nativement, contrairement à `tts-1` qui utilise piper (anglais seulement).
|
||
|
||
Dans Open WebUI, change le modèle TTS de `tts-1` → **`tts-1-hd`** en gardant la voix `nova`. XTTS va cloner la voix du fichier `nova.wav` et parler en français avec cette voix.
|
||
|
||
**Admin Panel → Settings → Audio → Text-to-Speech :**
|
||
|
||
|
||
| Champ | Valeur |
|
||
| :-- | :-- |
|
||
| Model | `tts-1-hd` |
|
||
| Voice | `nova` |
|
||
|
||
|
||
---
|
||
|
||
# j'ai changé pour tts-1-hd, voici les logs :
|
||
|
||
Injected system message: The following is a list of stored memories, which are information related to the user, but are not part of this conversation. Consider the information within these memories as factual and use them to inform your responses, but do not bring up information from the memory bank unless it is directly related to the current conversation. Do not make up memories if the provided memory bank is empty. This is the list of memories:
|
||
[]
|
||
2026-02-21 16:47:34.124 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "POST /api/chat/completions HTTP/1.1" 200
|
||
2026-02-21 16:47:34.147 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
|
||
2026-02-21 16:47:39.094 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 16:47:43.784 | INFO | function_auto_memory:log:652 - outlet invoked
|
||
2026-02-21 16:47:43.793 | INFO | function_auto_memory:log:652 - no related memories found
|
||
2026-02-21 16:47:43.793 | INFO | function_auto_memory:log:652 - found 0 related memories before filtering
|
||
2026-02-21 16:47:43.793 | INFO | function_auto_memory:log:652 - using 0 related memories
|
||
2026-02-21 16:47:43.798 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "POST /api/chat/completed HTTP/1.1" 200
|
||
2026-02-21 16:47:43.825 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "POST /api/v1/chats/9738a8fc-f46a-4afb-bb09-d54b39e767e3 HTTP/1.1" 200
|
||
2026-02-21 16:47:43.838 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
|
||
2026-02-21 16:48:01.616 | INFO | httpx._client:_send_single_request:1025 - HTTP Request: POST [http://192.168.1.27:3011/v1/chat/completions](http://192.168.1.27:3011/v1/chat/completions) "HTTP/1.1 200 OK"
|
||
2026-02-21 16:48:01.618 | INFO | function_auto_memory:log:652 - no changes
|
||
2026-02-21 16:48:10.792 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
|
||
2026-02-21 16:48:11.430 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/9738a8fc-f46a-4afb-bb09-d54b39e767e3 HTTP/1.1" 200
|
||
2026-02-21 16:48:11.447 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/all/tags HTTP/1.1" 200
|
||
2026-02-21 16:48:39.088 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
|
||
Les logs montrent que le LLM répond bien (`200 OK` sur `/v1/chat/completions`). Le pipeline complet fonctionne — il manque juste la requête TTS dans les logs. Déclenche un test vocal et surveille :
|
||
|
||
```bash
|
||
docker logs open-webui -f | grep -i "tts\|audio\|speech\|8100"
|
||
```
|
||
|
||
Parle à Effi pendant que ça tourne. Si aucune ligne TTS n'apparaît, c'est que **Open WebUI n'envoie pas la réponse au TTS** — ce qui arrive quand le mode vocal n'est pas activé correctement dans l'interface.
|
||
|
||
## Vérifie le mode vocal dans l'UI
|
||
|
||
Dans l'interface chat d'Open WebUI, le bouton micro a deux modes :
|
||
|
||
- 🎤 **Micro seul** → STT uniquement, la réponse s'affiche en texte mais n'est pas lue
|
||
- 🎤➕🔊 **Mode vocal complet** → STT + réponse lue automatiquement en TTS
|
||
|
||
Il faut activer le **mode "Call"** (l'icône téléphone 📞 dans certaines versions d'Open WebUI) qui active le pipeline vocal complet STT→LLM→TTS. Ce bouton est généralement à côté du micro dans la barre de saisie.
|
||
|
||
Est-ce que tu vois un bouton 📞 ou un bouton avec une icône de casque/haut-parleur dans l'interface ?
|
||
|
||
---
|
||
|
||
# voici les logs
|
||
|
||
Les logs racontent toute l'histoire clairement. À la fin, tout fonctionne :
|
||
|
||
```
|
||
16:36:22 POST /v1/audio/transcriptions HTTP 200 ✅ STT OK
|
||
16:36:34 POST /v1/audio/speech HTTP 200 ✅ TTS OK
|
||
...
|
||
16:47:33 POST /v1/audio/speech HTTP 200 ✅ TTS OK
|
||
```
|
||
|
||
**Le pipeline complet STT → LLM → TTS est fonctionnel !**[^4_1]
|
||
|
||
Les erreurs du début (`Connection refused` sur `192.168.1.11:8200`) correspondent aux moments où le conteneur speaches était down ou pas encore prêt — c'est résolu maintenant.[^4_1]
|
||
|
||
## Ce qui reste à ignorer (non bloquant)
|
||
|
||
- `404 Not Found for url http://192.168.1.27:8100/v1/audio/voices` — openedai-speech ne supporte pas cet endpoint, Open WebUI tombe en fallback sur les voix statiques. Pas grave.[^4_1]
|
||
- `InsecureKeyLengthWarning` — WEBUI_SECRET_KEY trop court (31 bytes), pas bloquant mais tu peux allonger la clé dans ton `.env` si tu veux.
|
||
|
||
|
||
## Bilan final du projet Effi — Session d'aujourd'hui
|
||
|
||
| Composant | Statut |
|
||
| :-- | :-- |
|
||
| speaches (STT large-v3) sur PC de jeu | ✅ Opérationnel |
|
||
| Open WebUI → speaches `192.168.1.11:8200` | ✅ Connecté |
|
||
| openedai-speech (TTS nova) sur effi-server | ✅ Opérationnel |
|
||
| Pipeline vocal complet STT→LLM→TTS | ✅ Fonctionnel |
|
||
|
||
Effi parle et écoute ! 🎉
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^4_1]: paste.txt
|
||
|
||
|
||
---
|
||
|
||
# tout marche mais ce n'est pas assez rapide il faut utiliser la carte graphique avec rocm
|
||
|
||
Le problème est clair : **CTranslate2 ne supporte pas ROCm nativement** — il faut utiliser le fork `arlo-phoenix/CTranslate2-rocm` ou `ROCm/CTranslate2` et rebuilder l'image speaches avec cette version.[^5_1][^5_2]
|
||
|
||
## Plan : Rebuilder speaches avec CTranslate2-ROCm
|
||
|
||
La solution est de créer un `Dockerfile` custom qui :
|
||
|
||
1. Part de l'image ROCm AMD officielle
|
||
2. Compile `CTranslate2-rocm` pour `gfx1101` (RX 7800 XT)
|
||
3. Installe speaches par-dessus
|
||
```bash
|
||
cd ~/speaches/src
|
||
nano Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Colle ce contenu :
|
||
|
||
```dockerfile
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
# ── Dépendances build ──────────────────────────────────────
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake python3 python3-pip python3-venv \
|
||
clang libhipblas-dev libmiopengemm-dev \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# ── CTranslate2-rocm compilé pour gfx1101 ─────────────────
|
||
RUN git clone --recurse-submodules https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2 && \
|
||
cd /ct2 && \
|
||
CLANG_CMAKE_CXX_COMPILER=clang++ \
|
||
CXX=clang++ \
|
||
HIPCXX="$(hipconfig -l)/clang" \
|
||
HIP_PATH="$(hipconfig -R)" \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
cmake -S . -B build \
|
||
-DWITH_MKL=OFF \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON && \
|
||
cmake --build build -- -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig && \
|
||
cd python && \
|
||
pip3 install -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
pip3 install dist/*.whl
|
||
|
||
# ── Speaches ───────────────────────────────────────────────
|
||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY . .
|
||
RUN uv sync --frozen --compile-bytecode --no-dev --no-editable
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", "--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
```
|
||
|
||
Lance le build (⚠️ **30-60 minutes** — compilation C++ pour gfx1101) :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Puis mets à jour `docker-compose.yml` :
|
||
|
||
```yaml
|
||
image: speaches:rocm-ct2
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
- WHISPER__MODEL=Systran/faster-whisper-large-v3
|
||
- WHISPER__LANGUAGE=fr
|
||
- WHISPER__COMPUTE_TYPE=float16 # ← repasse à float16 avec GPU
|
||
- WHISPER__DEVICE=cuda
|
||
```
|
||
|
||
> **Note :** Le build est long car il compile CTranslate2 depuis les sources avec le compilateur HIP spécifiquement pour l'architecture `gfx1101` de ta RX 7800 XT. Lance-le et dis-moi si tu as des erreurs de compilation.[^5_2]
|
||
<span style="display:none">[^5_10][^5_11][^5_12][^5_13][^5_14][^5_15][^5_3][^5_4][^5_5][^5_6][^5_7][^5_8][^5_9]</span>
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^5_1]: https://rocm.blogs.amd.com/artificial-intelligence/ctranslate2/README.html
|
||
|
||
[^5_2]: https://github.com/arlo-phoenix/CTranslate2-rocm
|
||
|
||
[^5_3]: https://github.com/OpenNMT/CTranslate2/issues/1072
|
||
|
||
[^5_4]: https://rocm.blogs.amd.com/software-tools-optimization/hipify/README.html
|
||
|
||
[^5_5]: https://llm-tracker.info/howto/AMD-GPUs
|
||
|
||
[^5_6]: https://blog.csdn.net/eidolon_foot/article/details/144121989
|
||
|
||
[^5_7]: https://github.com/Donkey545/wyoming-faster-whisper-rocm
|
||
|
||
[^5_8]: https://hub.docker.com/r/pigeekcom/wyoming-faster-whisper-rocm
|
||
|
||
[^5_9]: https://github.com/m-bain/whisperX/issues/566
|
||
|
||
[^5_10]: https://github.com/SYSTRAN/faster-whisper
|
||
|
||
[^5_11]: https://rocm.docs.amd.com/projects/HIP/en/latest/install/build.html
|
||
|
||
[^5_12]: https://www.reddit.com/r/ROCm/comments/1q8j4h7/any_way_to_run_openais_whisper_or_other_s2t/
|
||
|
||
[^5_13]: https://github.com/arlo-phoenix/CTranslate2-rocm/blob/rocm/README_ROCM.md
|
||
|
||
[^5_14]: https://github.com/systran/faster-whisper
|
||
|
||
[^5_15]: https://docs.pytorch.org/docs/stable/notes/hip.html
|
||
|
||
|
||
---
|
||
|
||
# avant d'aller plus loins voici les infos de rocm :
|
||
|
||
folzo@folzo-Corp:~/speaches\$ rocm-smi
|
||
|
||
========================================= ROCm System Management Interface =========================================
|
||
=================================================== Concise Info ===================================================
|
||
Device Node IDs Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
|
||
(DID, GUID) (Edge) (Avg) (Mem, Compute, ID)
|
||
====================================================================================================================
|
||
0 1 0x747e, 60998 51.0°C 50.0W N/A, N/A, 0 2737Mhz 96Mhz 14.9% auto 212.0W 72% 100%
|
||
====================================================================================================================
|
||
=============================================== End of ROCm SMI Log ================================================
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Excellente nouvelle — **ROCm fonctionne parfaitement** sur le host ! Ta RX 7800 XT est détectée (`0x747e` = Navi32, gfx1101), 16GB VRAM dont 72% utilisés (probablement par Ollama), GPU à 100% = Ollama qui tourne.[^6_1]
|
||
|
||
## Le vrai problème
|
||
|
||
ROCm fonctionne sur le host, mais **pas dans le conteneur Docker**. Il faut vérifier :
|
||
|
||
```bash
|
||
docker exec speaches-stt rocm-smi
|
||
```
|
||
|
||
Si ça retourne une erreur, c'est que les devices ne sont pas bien passés au conteneur. Vérifie :
|
||
|
||
```bash
|
||
docker exec speaches-stt ls /dev/kfd
|
||
docker exec speaches-stt ls /dev/dri/
|
||
```
|
||
|
||
Et teste si CTranslate2 voit le GPU depuis l'intérieur :
|
||
|
||
```bash
|
||
docker exec speaches-stt python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('CUDA/ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
|
||
## Ce que je suspecte
|
||
|
||
CTranslate2 compilé en CUDA cherche `libcublasLt.so.12` (NVIDIA). La version dans l'image speaches buildée est la version **pip standard** sans support ROCm. La solution la plus rapide avant un rebuild complet : **remplacer CTranslate2 par la wheel ROCm** dans le conteneur existant.
|
||
|
||
```bash
|
||
docker exec -it speaches-stt bash -c "
|
||
pip3 install ctranslate2 --index-url https://download.pytorch.org/whl/rocm6.2
|
||
"
|
||
```
|
||
|
||
Dis-moi d'abord ce que retournent les commandes de diagnostic — selon les résultats on choisit l'approche la plus propre.
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^6_1]: https://www.reddit.com/r/ROCm/comments/1k3tspj/again_another_rx_7800_xt_question/
|
||
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches\$ docker exec speaches-stt rocm-smi
|
||
|
||
========================================== ROCm System Management Interface ==========================================
|
||
==================================================== Concise Info ====================================================
|
||
Device Node IDs Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
|
||
(DID, GUID) (Edge) (Avg) (Mem, Compute, ID)
|
||
======================================================================================================================
|
||
0 1 0x747e, 60998 50.0°C 56.0W N/A, N/A, 0 2734Mhz 456Mhz 14.9% auto 212.0W 72% 100%
|
||
======================================================================================================================
|
||
================================================ End of ROCm SMI Log =================================================
|
||
folzo@folzo-Corp:~/speaches\$ docker exec speaches-stt ls /dev/kfd
|
||
docker exec speaches-stt ls /dev/dri/
|
||
/dev/kfd
|
||
card1
|
||
renderD128
|
||
folzo@folzo-Corp:~/speaches\$ docker exec speaches-stt python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('CUDA/ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
Traceback (most recent call last):
|
||
|
||
```
|
||
File "<string>", line 4, in <module>
|
||
```
|
||
|
||
RuntimeError: CUDA failed with error CUDA driver version is insufficient for CUDA runtime version
|
||
Version CT2: 4.5.0
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Parfait diagnostic. **ROCm est visible dans le conteneur** (`/dev/kfd`, `/dev/dri/renderD128` présents, `rocm-smi` fonctionne), mais CTranslate2 4.5.0 est la version **CUDA officielle** qui cherche les drivers NVIDIA — pas une version ROCm.[^7_1]
|
||
|
||
La solution rapide : installer la wheel CTranslate2 compilée pour ROCm directement dans le venv speaches.
|
||
|
||
```bash
|
||
docker exec -it speaches-stt bash
|
||
```
|
||
|
||
Une fois dans le conteneur :
|
||
|
||
```bash
|
||
# Vérifie où est le venv
|
||
source /home/ubuntu/speaches/.venv/bin/activate
|
||
|
||
# Désinstalle la version CUDA
|
||
pip uninstall ctranslate2 -y
|
||
|
||
# Installe la version ROCm (compilée par arlo-phoenix pour ROCm 6.x)
|
||
pip install ctranslate2 --extra-index-url https://wheel.arlo-phoenix.dev/rocm6/
|
||
|
||
# Vérifie
|
||
python3 -c "
|
||
import ctranslate2
|
||
print('Version:', ctranslate2.__version__)
|
||
print('ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
Si le repo `arlo-phoenix` n'est pas disponible, alternative via le blog AMD officiel :[^7_1]
|
||
|
||
```bash
|
||
pip install ctranslate2-rocm
|
||
```
|
||
|
||
Dis-moi ce que retourne le `pip install` — selon la disponibilité du package on ajustera. Si ça marche, on sortira du conteneur, on commitera l'image modifiée, et on remettra `WHISPER__DEVICE=cuda` + `WHISPER__COMPUTE_TYPE=float16` dans le compose.
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^7_1]: https://rocm.blogs.amd.com/artificial-intelligence/ctranslate2/README.html
|
||
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches\$ docker exec -it speaches-stt bash
|
||
|
||
To run a command as administrator (user "root"), use "sudo <command>".
|
||
See "man sudo_root" for details.
|
||
|
||
ubuntu@f268afe88f2b:~/speaches\$ pip uninstall ctranslate2 -y
|
||
error: externally-managed-environment
|
||
|
||
× This environment is externally managed
|
||
╰─> To install Python packages system-wide, try apt install
|
||
python3-xyz, where xyz is the package you are trying to
|
||
install.
|
||
|
||
If you wish to install a non-Debian-packaged Python package,
|
||
create a virtual environment using python3 -m venv path/to/venv.
|
||
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
|
||
sure you have python3-full installed.
|
||
|
||
If you wish to install a non-Debian packaged Python application,
|
||
it may be easiest to use pipx install xyz, which will manage a
|
||
virtual environment for you. Make sure you have pipx installed.
|
||
|
||
See /usr/share/doc/python3.12/README.venv for more information.
|
||
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
|
||
hint: See PEP 668 for the detailed specification.
|
||
ubuntu@f268afe88f2b:~/speaches\$
|
||
|
||
Je dois lancer en root ?
|
||
|
||
Non, pas besoin de root — speaches utilise un **venv**. Il faut activer le venv d'abord :
|
||
|
||
```bash
|
||
source /home/ubuntu/speaches/.venv/bin/activate
|
||
```
|
||
|
||
Tu devrais voir `(.venv)` apparaître dans le prompt. Ensuite :
|
||
|
||
```bash
|
||
# Désinstalle la version CUDA
|
||
pip uninstall ctranslate2 -y
|
||
|
||
# Vérifie la version ROCm disponible sur PyPI
|
||
pip index versions ctranslate2 2>/dev/null | head -3
|
||
```
|
||
|
||
Pour l'installation ROCm, essaie d'abord le package du blog AMD officiel :[^8_1]
|
||
|
||
```bash
|
||
pip install ctranslate2-rocm
|
||
```
|
||
|
||
Si ça échoue, essaie le fork arlo-phoenix qui est la référence communautaire pour CTranslate2+ROCm :[^8_2]
|
||
|
||
```bash
|
||
pip install ctranslate2 --extra-index-url https://wheel.arlo-phoenix.dev/
|
||
```
|
||
|
||
Et si les deux échouent, on peut forcer la réinstallation depuis les wheels ROCm PyTorch :
|
||
|
||
```bash
|
||
pip install torch --index-url https://download.pytorch.org/whl/rocm6.2 && \
|
||
pip install ctranslate2
|
||
```
|
||
|
||
Dis-moi ce que retourne chaque commande au fur et à mesure.
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^8_1]: https://rocm.blogs.amd.com/artificial-intelligence/ctranslate2/README.html
|
||
|
||
[^8_2]: https://github.com/arlo-phoenix/CTranslate2-rocm
|
||
|
||
|
||
---
|
||
|
||
# il y a une erreur ? le PIP ne semble pas marcher :
|
||
|
||
folzo@folzo-Corp:~/speaches\$ docker exec -it speaches-stt bash
|
||
To run a command as administrator (user "root"), use "sudo <command>".
|
||
See "man sudo_root" for details.
|
||
|
||
ubuntu@f268afe88f2b:~/speaches\$ source /home/ubuntu/speaches/.venv/bin/activate
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ pip uninstall ctranslate2 -y
|
||
error: externally-managed-environment
|
||
|
||
× This environment is externally managed
|
||
╰─> To install Python packages system-wide, try apt install
|
||
python3-xyz, where xyz is the package you are trying to
|
||
install.
|
||
|
||
If you wish to install a non-Debian-packaged Python package,
|
||
create a virtual environment using python3 -m venv path/to/venv.
|
||
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
|
||
sure you have python3-full installed.
|
||
|
||
If you wish to install a non-Debian packaged Python application,
|
||
it may be easiest to use pipx install xyz, which will manage a
|
||
virtual environment for you. Make sure you have pipx installed.
|
||
|
||
See /usr/share/doc/python3.12/README.venv for more information.
|
||
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
|
||
hint: See PEP 668 for the detailed specification.
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ pip index versions ctranslate2 2>/dev/null | head -3
|
||
ctranslate2 (4.7.1)
|
||
Available versions: 4.7.1, 4.7.0, 4.6.3, 4.6.2, 4.6.1, 4.6.0, 4.5.0, 4.4.0, 4.3.1, 4.2.1, 4.1.0, 4.0.0, 3.24.0, 3.23.0, 3.22.0, 3.21.0, 3.20.0, 3.19.0
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ pip install ctranslate2-rocm
|
||
error: externally-managed-environment
|
||
|
||
× This environment is externally managed
|
||
╰─> To install Python packages system-wide, try apt install
|
||
python3-xyz, where xyz is the package you are trying to
|
||
install.
|
||
|
||
If you wish to install a non-Debian-packaged Python package,
|
||
create a virtual environment using python3 -m venv path/to/venv.
|
||
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
|
||
sure you have python3-full installed.
|
||
|
||
If you wish to install a non-Debian packaged Python application,
|
||
it may be easiest to use pipx install xyz, which will manage a
|
||
virtual environment for you. Make sure you have pipx installed.
|
||
|
||
See /usr/share/doc/python3.12/README.venv for more information.
|
||
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
|
||
hint: See PEP 668 for the detailed specification.
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$
|
||
|
||
Le venv est activé (`(speaches)` visible) mais `pip` pointe encore sur le pip système. Il faut utiliser le pip **du venv** explicitement :
|
||
|
||
```bash
|
||
# Utilise le pip du venv, pas le pip système
|
||
/home/ubuntu/speaches/.venv/bin/pip uninstall ctranslate2 -y
|
||
|
||
# Puis installe la version ROCm
|
||
/home/ubuntu/speaches/.venv/bin/pip install ctranslate2-rocm
|
||
|
||
# Ou si ça échoue, force avec uv (le gestionnaire utilisé par speaches)
|
||
/bin/uv pip install ctranslate2-rocm --python /home/ubuntu/speaches/.venv
|
||
```
|
||
|
||
Vérifie quel pip est utilisé :
|
||
|
||
```bash
|
||
which pip
|
||
# Doit retourner /home/ubuntu/speaches/.venv/bin/pip
|
||
# Si c'est /usr/bin/pip → le venv n'est pas bien activé
|
||
```
|
||
|
||
Le problème vient du fait que speaches utilise **uv** pour gérer son venv, ce qui crée un environnement légèrement différent d'un venv standard. `uv pip` est la commande correcte :
|
||
|
||
```bash
|
||
/bin/uv pip uninstall ctranslate2 --python /home/ubuntu/speaches/.venv
|
||
/bin/uv pip install ctranslate2-rocm --python /home/ubuntu/speaches/.venv
|
||
|
||
# Vérifie
|
||
/home/ubuntu/speaches/.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version:', ctranslate2.__version__)
|
||
print('ROCm types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# speaches) ubuntu@f268afe88f2b:~/speaches\$ /home/ubuntu/speaches/.venv/bin/pip uninstall ctranslate2 -y
|
||
|
||
bash: /home/ubuntu/speaches/.venv/bin/pip: No such file or directory
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ /home/ubuntu/speaches/.venv/bin/pip install ctranslate2-rocm
|
||
bash: /home/ubuntu/speaches/.venv/bin/pip: No such file or directory
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$
|
||
|
||
Speaches utilise `uv` qui ne crée pas de `pip` dans le venv. Utilise directement `uv` :
|
||
|
||
```bash
|
||
# Liste ce qui est installé pour confirmer ctranslate2
|
||
/bin/uv pip list --python /home/ubuntu/speaches/.venv | grep ctranslate
|
||
|
||
# Désinstalle et réinstalle avec uv
|
||
/bin/uv pip uninstall ctranslate2 --python /home/ubuntu/speaches/.venv
|
||
/bin/uv pip install ctranslate2-rocm --python /home/ubuntu/speaches/.venv
|
||
```
|
||
|
||
Si `ctranslate2-rocm` n'existe pas sur PyPI, essaie :
|
||
|
||
```bash
|
||
# Alternative : wheel arlo-phoenix
|
||
/bin/uv pip install ctranslate2 \
|
||
--extra-index-url https://wheel.arlo-phoenix.dev/ \
|
||
--python /home/ubuntu/speaches/.venv
|
||
```
|
||
|
||
Et vérifie avec le python du venv :
|
||
|
||
```bash
|
||
/home/ubuntu/speaches/.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version:', ctranslate2.__version__)
|
||
print('ROCm:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# (speaches) ubuntu@f268afe88f2b:~/speaches\$ /bin/uv pip list --python /home/ubuntu/speaches/.venv | grep ctranslate
|
||
|
||
ctranslate2 4.5.0
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ /bin/uv pip uninstall ctranslate2 --python /home/ubuntu/speaches/.venv
|
||
Uninstalled 1 package in 69ms
|
||
|
||
- ctranslate2==4.5.0
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$ /bin/uv pip install ctranslate2-rocm --python /home/ubuntu/speaches/.venv
|
||
x No solution found when resolving dependencies:
|
||
`-> Because ctranslate2-rocm was not found in the package registry and you require ctranslate2-rocm, we can conclude that your requirements are unsatisfiable. (speaches) ubuntu@f268afe88f2b:~/speaches$ /bin/uv pip install ctranslate2 \\ --extra-index-url [https://wheel.arlo-phoenix.dev/](https://wheel.arlo-phoenix.dev/) \\ --python /home/ubuntu/speaches/.venv ⠇ Resolving dependencies... error: Failed to fetch: `https://wheel.arlo-phoenix.dev/ctranslate2/`
|
||
Caused by: Request failed after 3 retries
|
||
Caused by: error sending request for url (https://wheel.arlo-phoenix.dev/ctranslate2/)
|
||
Caused by: client error (Connect)
|
||
Caused by: dns error
|
||
Caused by: failed to lookup address information: Name does not resolve
|
||
(speaches) ubuntu@f268afe88f2b:~/speaches\$
|
||
|
||
La compilation doit se faire dans un conteneur avec les bons outils. La méthode la plus propre est de créer un nouveau `Dockerfile` qui compile CTranslate2-rocm depuis les sources. Sors du conteneur et travaille depuis le host :
|
||
|
||
```bash
|
||
exit
|
||
```
|
||
|
||
Puis crée le Dockerfile custom :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
```dockerfile
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
# ── Dépendances build
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# ── Compile CTranslate2-rocm pour gfx1101 (RX 7800 XT)
|
||
RUN git clone --recurse-submodules \
|
||
https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2
|
||
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
CLANG_CMAKE_CXX_COMPILER=clang++ \
|
||
CXX=clang++ \
|
||
HIPCXX="$(hipconfig -l)/clang" \
|
||
HIP_PATH="$(hipconfig -R)" \
|
||
cmake -S . -B build \
|
||
-DWITH_MKL=OFF \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
|
||
# ── Build wheel Python CTranslate2-rocm
|
||
RUN cd /ct2/python && \
|
||
pip3 install --break-system-packages -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
cp dist/*.whl /ct2-wheel.whl
|
||
|
||
# ── Image finale speaches + CT2-rocm
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=0 /ct2-wheel.whl /ct2-wheel.whl
|
||
COPY --from=0 /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg && \
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable && \
|
||
/bin/uv pip install /ct2-wheel.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
```
|
||
|
||
Lance le build (⚠️ 30-60 min, compilation C++) :
|
||
|
||
```bash
|
||
cd ~/speaches/src
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Pendant ce temps, mets à jour le `docker-compose.yml` pour être prêt :
|
||
|
||
```bash
|
||
nano ~/speaches/docker-compose.yml
|
||
```
|
||
|
||
Remplace `image: speaches:rocm` par `image: speaches:rocm-ct2` et change les variables :
|
||
|
||
```yaml
|
||
- WHISPER__COMPUTE_TYPE=float16
|
||
- WHISPER__DEVICE=cuda
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# j'ai modifier le fichier yml, mais la compilation n'a pas marché :
|
||
|
||
"folzo@folzo-Corp:~/speaches\$ cd ~/speaches/src
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 29.6s (10/20) docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 1.97kB 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:latest 6.1s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.7s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> FROM ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b3c9efb4 0.9s
|
||
=> => resolve ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b3 0.0s
|
||
=> => sha256:45e14b7e1aeb9452ca198cb664ab6852c2c86b6e68c1e6625bc0055bc374ce7e 96B / 96B 0.2s
|
||
=> => sha256:8a75ce161c366ca2f853165747e1e64dba18144978962fb39a7a08b1a4bcbb6f 23.11MB / 23.11MB 0.5s
|
||
=> => extracting sha256:8a75ce161c366ca2f853165747e1e64dba18144978962fb39a7a08b1a4bcbb6f 0.2s
|
||
=> => extracting sha256:45e14b7e1aeb9452ca198cb664ab6852c2c86b6e68c1e6625bc0055bc374ce7e 0.0s
|
||
=> CACHED [stage-0 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> [internal] load build context 0.1s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git cmake n 10.4s
|
||
=> [stage-0 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate2-rocm](https://github.com/arlo-phoenix/CTranslate2-rocm) 12.5s
|
||
=> ERROR [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 CLANG_CMAKE_CXX_COMPILER=clang++ 0.4s
|
||
------
|
||
> [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 CLANG_CMAKE_CXX_COMPILER=clang++ CXX=clang++ HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake -S . -B build -DWITH_MKL=OFF -DWITH_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx1101 -DBUILD_TESTS=OFF -DWITH_CUDNN=ON -GNinja \&\& ninja -C build -j\$(nproc) \&\& cmake --install build --prefix /usr/local \&\& ldconfig:
|
||
0.329 -- The C compiler identification is GNU 13.3.0
|
||
0.334 CMake Error at /usr/share/cmake-3.28/Modules/CMakeDetermineCXXCompiler.cmake:48 (message):
|
||
0.334 Could not find compiler set in environment variable CXX:
|
||
0.334
|
||
0.334 clang++.
|
||
0.334
|
||
0.334 Call Stack (most recent call first):
|
||
0.334 CMakeLists.txt:8 (project)
|
||
0.334
|
||
0.334
|
||
0.334 CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
|
||
0.334 -- Configuring incomplete, errors occurred!
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 50)
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 56)
|
||
Dockerfile.rocm-ct2:12
|
||
--------------------
|
||
11 |
|
||
12 | >>> RUN cd /ct2 \&\& \\
|
||
13 | >>> PYTORCH_ROCM_ARCH=gfx1101 \\
|
||
14 | >>> CLANG_CMAKE_CXX_COMPILER=clang++ \\
|
||
15 | >>> CXX=clang++ \\
|
||
16 | >>> HIPCXX="$(hipconfig -l)/clang" \\
|
||
17 | >>> HIP_PATH="$(hipconfig -R)" \\
|
||
18 | >>> cmake -S . -B build \\
|
||
19 | >>> -DWITH_MKL=OFF \\
|
||
20 | >>> -DWITH_HIP=ON \\
|
||
21 | >>> -DCMAKE_HIP_ARCHITECTURES=gfx1101 \\
|
||
22 | >>> -DBUILD_TESTS=OFF \\
|
||
23 | >>> -DWITH_CUDNN=ON \\
|
||
24 | >>> -GNinja \&\& \\
|
||
25 | >>> ninja -C build -j\$(nproc) \&\& \\
|
||
26 | >>> cmake --install build --prefix /usr/local \&\& \\
|
||
27 | >>> ldconfig
|
||
|
||
|
||
| 28 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 CLANG_CMAKE_CXX_COMPILER=clang++ CXX=clang++ HIPCXX=\\"$(hipconfig -l)/clang\\" HIP_PATH=\\"$(hipconfig -R)\\" cmake -S . -B build -DWITH_MKL=OFF -DWITH_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx1101 -DBUILD_TESTS=OFF -DWITH_CUDNN=ON -GNinja \&\& ninja -C build -j$(nproc) && cmake --install build --prefix /usr/local && ldconfig" did not complete successfully: exit code: 1
|
||
folzo@folzo-Corp:~/speaches/src$
|
||
"
|
||
|
||
L'erreur est claire : `clang++` n'est pas installé dans l'image ROCm. Il faut l'ajouter dans le `apt-get install`. Corrige le Dockerfile :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace uniquement le premier `RUN apt-get` par :
|
||
|
||
```dockerfile
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev \
|
||
clang clang++ llvm \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
```
|
||
|
||
Et pour éviter le problème `CXX=clang++` non trouvé, passe le chemin complet dans le RUN de cmake. Remplace le bloc cmake par :
|
||
|
||
```dockerfile
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
CXX=/usr/bin/clang++ \
|
||
CC=/usr/bin/clang \
|
||
HIPCXX="$(hipconfig -l)/clang" \
|
||
HIP_PATH="$(hipconfig -R)" \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/usr/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/usr/bin/clang \
|
||
-DWITH_MKL=OFF \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
```
|
||
|
||
Puis relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
> L'image ROCm de base contient `hipconfig` mais pas forcément `clang++` dans le PATH par défaut — c'est un classique avec les images AMD.
|
||
|
||
---
|
||
|
||
# toujours un probleme :
|
||
|
||
folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 4.2s (8/20) docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.08kB 0.0s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.6s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:latest 0.4s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b3 0.0s
|
||
=> CACHED [stage-0 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> ERROR [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git cm 3.5s
|
||
------
|
||
> [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git cmake ninja-build python3-dev clang clang++ llvm \&\& rm -rf /var/lib/apt/lists/*:
|
||
0.304 Get:1 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble InRelease [256 kB]
|
||
0.310 Get:2 [https://repo.radeon.com/amdgpu/6.3.4/ubuntu](https://repo.radeon.com/amdgpu/6.3.4/ubuntu) noble InRelease [5465 B]
|
||
0.322 Get:3 [https://repo.radeon.com/rocm/apt/6.3.4](https://repo.radeon.com/rocm/apt/6.3.4) noble InRelease [2605 B]
|
||
0.432 Get:4 [http://security.ubuntu.com/ubuntu](http://security.ubuntu.com/ubuntu) noble-security InRelease [126 kB]
|
||
0.475 Get:5 [https://repo.radeon.com/amdgpu/6.3.4/ubuntu](https://repo.radeon.com/amdgpu/6.3.4/ubuntu) noble/main amd64 Packages [14.6 kB]
|
||
0.530 Get:6 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-updates InRelease [126 kB]
|
||
0.549 Get:7 [https://repo.radeon.com/rocm/apt/6.3.4](https://repo.radeon.com/rocm/apt/6.3.4) noble/main amd64 Packages [60.0 kB]
|
||
0.586 Get:8 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-backports InRelease [126 kB]
|
||
0.642 Get:9 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble/main amd64 Packages [1808 kB]
|
||
0.813 Get:10 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble/universe amd64 Packages [19.3 MB]
|
||
0.891 Get:11 [http://security.ubuntu.com/ubuntu](http://security.ubuntu.com/ubuntu) noble-security/universe amd64 Packages [1207 kB]
|
||
1.123 Get:12 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble/multiverse amd64 Packages [331 kB]
|
||
1.124 Get:13 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble/restricted amd64 Packages [117 kB]
|
||
1.124 Get:14 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-updates/main amd64 Packages [2240 kB]
|
||
1.131 Get:15 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-updates/restricted amd64 Packages [3381 kB]
|
||
1.193 Get:16 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-updates/multiverse amd64 Packages [38.1 kB]
|
||
1.193 Get:17 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-updates/universe amd64 Packages [2016 kB]
|
||
1.201 Get:18 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-backports/main amd64 Packages [49.5 kB]
|
||
1.225 Get:19 [http://archive.ubuntu.com/ubuntu](http://archive.ubuntu.com/ubuntu) noble-backports/universe amd64 Packages [34.6 kB]
|
||
1.568 Get:20 [http://security.ubuntu.com/ubuntu](http://security.ubuntu.com/ubuntu) noble-security/main amd64 Packages [1857 kB]
|
||
1.793 Get:21 [http://security.ubuntu.com/ubuntu](http://security.ubuntu.com/ubuntu) noble-security/multiverse amd64 Packages [34.8 kB]
|
||
1.795 Get:22 [http://security.ubuntu.com/ubuntu](http://security.ubuntu.com/ubuntu) noble-security/restricted amd64 Packages [3196 kB]
|
||
2.077 Fetched 36.3 MB in 2s (19.3 MB/s)
|
||
2.077 Reading package lists...
|
||
2.621 W: https://repo.radeon.com/amdgpu/6.3.4/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
|
||
2.621 W: https://repo.radeon.com/rocm/apt/6.3.4/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
|
||
2.641 Reading package lists...
|
||
3.202 Building dependency tree...
|
||
3.282 Reading state information...
|
||
3.366 hipify-clang is already the newest version (18.0.0.60304-76~24.04).
|
||
3.366 hipify-clang set to manually installed.
|
||
3.366 Some packages could not be installed. This may mean that you have
|
||
3.366 requested an impossible situation or if you are using the unstable
|
||
3.366 distribution that some required packages have not yet been created
|
||
3.366 or been moved out of Incoming.
|
||
3.366 The following information may help to resolve the situation:
|
||
3.366
|
||
3.366 The following packages have unmet dependencies:
|
||
3.419 libopencl-clang-14-dev : Conflicts: libopencl-clang-x.y-dev
|
||
3.419 libopencl-clang-15-dev : Conflicts: libopencl-clang-x.y-dev
|
||
3.419 libopencl-clang-16-dev : Conflicts: libopencl-clang-x.y-dev
|
||
3.419 libopencl-clang-17-dev : Conflicts: libopencl-clang-x.y-dev
|
||
3.419 python3-clang-14 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-15 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-16 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-17 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-18 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-19 : Conflicts: python-clang-x.y
|
||
3.419 python3-clang-20 : Conflicts: python-clang-x.y
|
||
3.423 E: Unable to correct problems, you have held broken packages.
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 53)
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 59)
|
||
Dockerfile.rocm-ct2:4
|
||
--------------------
|
||
3 | \# ── Dépendances build
|
||
4 | >>> RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y \\
|
||
5 | >>> git cmake ninja-build python3-dev \\
|
||
6 | >>> clang clang++ llvm \\
|
||
7 | >>> \&\& rm -rf /var/lib/apt/lists/*
|
||
|
||
|
||
| 8 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git cmake ninja-build python3-dev clang clang++ llvm \&\& rm -rf /var/lib/apt/lists/*" did not complete successfully: exit code: 100
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
L'image ROCm a déjà `clang-18` installé (via `hipify-clang`), mais `clang` générique entre en conflit. Il faut utiliser la version spécifique déjà présente. Corrige le Dockerfile :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace le premier `RUN apt-get` par :
|
||
|
||
```dockerfile
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev python3-pip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
```
|
||
|
||
Et remplace le bloc cmake pour utiliser `clang-18` (déjà présent dans l'image ROCm) :
|
||
|
||
```dockerfile
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH="$(hipconfig -R)" \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/usr/lib/llvm-18/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/usr/lib/llvm-18/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/usr/lib/llvm-18/bin/clang \
|
||
-DWITH_MKL=OFF \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
```
|
||
|
||
Vérifie d'abord que clang-18 est bien là dans l'image :
|
||
|
||
```bash
|
||
docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \
|
||
find /usr/lib/llvm* -name "clang++" 2>/dev/null
|
||
```
|
||
|
||
Dis-moi le chemin retourné avant de relancer le build — on s'assure d'utiliser le bon chemin.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \\
|
||
|
||
find /usr/lib/llvm* -name "clang++" 2>/dev/null
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
et le fichier de conf :
|
||
GNU nano 8.4 /home/folzo/speaches/src/Dockerfile.rocm-ct2
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
# ── Dépendances build
|
||
|
||
RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y \\
|
||
git cmake ninja-build python3-dev python3-pip \\
|
||
\&\& rm -rf /var/lib/apt/lists/*
|
||
|
||
# ── Compile CTranslate2-rocm pour gfx1101 (RX 7800 XT)
|
||
|
||
RUN git clone --recurse-submodules \\
|
||
[https://github.com/arlo-phoenix/CTranslate2-rocm.git](https://github.com/arlo-phoenix/CTranslate2-rocm.git) /ct2
|
||
|
||
RUN cd /ct2 \&\& \\
|
||
PYTORCH_ROCM_ARCH=gfx1101 \\
|
||
HIP_PATH="$(hipconfig -R)" \\
|
||
cmake -S . -B build \\
|
||
-DCMAKE_CXX_COMPILER=/usr/lib/llvm-18/bin/clang++ \\
|
||
-DCMAKE_C_COMPILER=/usr/lib/llvm-18/bin/clang \\
|
||
-DCMAKE_HIP_COMPILER=/usr/lib/llvm-18/bin/clang \\
|
||
-DWITH_MKL=OFF \\
|
||
-DWITH_HIP=ON \\
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \\
|
||
-DBUILD_TESTS=OFF \\
|
||
-DWITH_CUDNN=ON \\
|
||
-GNinja && \\
|
||
ninja -C build -j$(nproc) \&\& \\
|
||
cmake --install build --prefix /usr/local \&\& \\
|
||
ldconfig
|
||
|
||
# ── Build wheel Python CTranslate2-rocm
|
||
|
||
RUN cd /ct2/python \&\& \\
|
||
pip3 install --break-system-packages -r install_requirements.txt \&\& \\
|
||
python3 setup.py bdist_wheel \&\& \\
|
||
cp dist/*.whl /ct2-wheel.whl
|
||
|
||
# ── Image finale speaches + CT2-rocm
|
||
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=0 /ct2-wheel.whl /ct2-wheel.whl
|
||
COPY --from=0 /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y \\
|
||
python3-pip ffmpeg \&\& \\
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& \\
|
||
/bin/uv pip install /ct2-wheel.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:\$LD_LIBRARY_PATH
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \\
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
|
||
`clang++` n'est pas dans `/usr/lib/llvm*` — cherchons où il est vraiment dans l'image :
|
||
|
||
```bash
|
||
docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \
|
||
bash -c "which clang++ 2>/dev/null || find / -name 'clang++' -type f 2>/dev/null | head -5"
|
||
```
|
||
|
||
Et vérifie aussi ce que hipconfig retourne :
|
||
|
||
```bash
|
||
docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \
|
||
bash -c "hipconfig -l && echo '---' && hipconfig -R && echo '---' && ls \$(hipconfig -l)/ | grep clang"
|
||
```
|
||
|
||
Ces deux commandes vont nous donner exactement les chemins disponibles dans l'image ROCm pour construire les flags cmake corrects.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \\
|
||
|
||
bash -c "which clang++ 2>/dev/null || find / -name 'clang++' -type f 2>/dev/null | head -5"
|
||
folzo@folzo-Corp:~/speaches/src\$ docker run --rm rocm/dev-ubuntu-24.04:6.3.4-complete \\
|
||
bash -c "hipconfig -l \&\& echo '---' \&\& hipconfig -R \&\& echo '---' \&\& ls \\$(hipconfig -l)/ | grep clang"
|
||
/opt/rocm-6.3.4/lib/llvm/bin---
|
||
/opt/rocm-6.3.4---
|
||
amdclang
|
||
amdclang++
|
||
amdclang-18
|
||
amdclang-cl
|
||
amdclang-cpp
|
||
clang
|
||
clang++
|
||
clang++.cfg
|
||
clang-18
|
||
clang-18.cfg
|
||
clang-build-select-link
|
||
clang-cl
|
||
clang-cl.cfg
|
||
clang-cpp
|
||
clang-cpp.cfg
|
||
clang-linker-wrapper
|
||
clang-nvlink-wrapper
|
||
clang-offload-bundler
|
||
clang-offload-packager
|
||
clang-offload-wrapper
|
||
clang.cfg
|
||
folzo@folzo-Corp:~/speaches/src$
|
||
|
||
Parfait ! `clang++` est dans `/opt/rocm-6.3.4/lib/llvm/bin/`. Corrige le Dockerfile avec les bons chemins :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace uniquement le bloc `RUN cd /ct2` :
|
||
|
||
```dockerfile
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
```
|
||
|
||
Puis relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Cette fois cmake devrait trouver le compilateur. La compilation elle-même prendra 20-40 minutes selon la charge CPU — c'est normal pour du C++ avec HIP.
|
||
|
||
---
|
||
|
||
# encore une erreur :
|
||
|
||
folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 27.4s (10/20) docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.09kB 0.0s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:latest 0.4s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED [stage-0 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b3 0.0s
|
||
=> [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git cmake n 13.2s
|
||
=> [stage-0 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate2-rocm](https://github.com/arlo-phoenix/CTranslate2-rocm) 12.7s
|
||
=> ERROR [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cmak 1.0s
|
||
------
|
||
> [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cmake -S . -B build -DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ -DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang -DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ -DWITH_MKL=OFF -DWITH_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx1101 -DBUILD_TESTS=OFF -DWITH_CUDNN=ON -GNinja \&\& ninja -C build -j\$(nproc) \&\& cmake --install build --prefix /usr/local \&\& ldconfig:
|
||
0.328 -- The C compiler identification is Clang 18.0.0
|
||
0.367 -- The CXX compiler identification is Clang 18.0.0
|
||
0.391 -- Detecting C compiler ABI info
|
||
0.451 -- Detecting C compiler ABI info - done
|
||
0.457 -- Check for working C compiler: /opt/rocm-6.3.4/lib/llvm/bin/clang - skipped
|
||
0.458 -- Detecting C compile features
|
||
0.458 -- Detecting C compile features - done
|
||
0.475 -- Detecting CXX compiler ABI info
|
||
0.535 -- Detecting CXX compiler ABI info - done
|
||
0.540 -- Check for working CXX compiler: /opt/rocm-6.3.4/lib/llvm/bin/clang++ - skipped
|
||
0.541 -- Detecting CXX compile features
|
||
0.541 -- Detecting CXX compile features - done
|
||
0.542 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
|
||
0.594 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
|
||
0.595 -- Found Threads: TRUE
|
||
0.596 -- Build spdlog: 1.10.0
|
||
0.598 -- Build type: Release
|
||
0.599 CMake Deprecation Warning at third_party/cpu_features/CMakeLists.txt:1 (cmake_minimum_required):
|
||
0.599 Compatibility with CMake < 3.5 will be removed from a future version of
|
||
0.599 CMake.
|
||
0.599
|
||
|
||
```
|
||
0.599 Update the VERSION argument <min> value or use a ...<max> suffix to tell
|
||
```
|
||
|
||
0.599 CMake that the project does not need compatibility with older versions.
|
||
0.599
|
||
0.599
|
||
0.601 -- Looking for dlfcn.h
|
||
0.647 -- Looking for dlfcn.h - found
|
||
0.647 -- Looking for getauxval
|
||
0.696 -- Looking for getauxval - found
|
||
0.699 -- Compiling for multiple CPU ISA and enabling runtime dispatch
|
||
0.879 -- Found OpenMP_C: -fopenmp=libomp (found version "5.1")
|
||
0.941 -- Found OpenMP_CXX: -fopenmp=libomp (found version "5.1")
|
||
0.941 -- Found OpenMP: TRUE (found version "5.1")
|
||
0.943 CMake Error at CMakeLists.txt:334 (message):
|
||
0.943 Intel OpenMP runtime libiomp5 not found
|
||
0.943
|
||
0.943
|
||
0.943 -- Configuring incomplete, errors occurred!
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 56)
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 50)
|
||
Dockerfile.rocm-ct2:12
|
||
--------------------
|
||
11 |
|
||
12 | >>> RUN cd /ct2 \&\& \\
|
||
13 | >>> PYTORCH_ROCM_ARCH=gfx1101 \\
|
||
14 | >>> HIP_PATH=/opt/rocm-6.3.4 \\
|
||
15 | >>> cmake -S . -B build \\
|
||
16 | >>> -DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \\
|
||
17 | >>> -DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \\
|
||
18 | >>> -DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \\
|
||
19 | >>> -DWITH_MKL=OFF \\
|
||
20 | >>> -DWITH_HIP=ON \\
|
||
21 | >>> -DCMAKE_HIP_ARCHITECTURES=gfx1101 \\
|
||
22 | >>> -DBUILD_TESTS=OFF \\
|
||
23 | >>> -DWITH_CUDNN=ON \\
|
||
24 | >>> -GNinja \&\& \\
|
||
25 | >>> ninja -C build -j\$(nproc) \&\& \\
|
||
26 | >>> cmake --install build --prefix /usr/local \&\& \\
|
||
27 | >>> ldconfig
|
||
|
||
|
||
| 28 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cmake -S . -B build -DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ -DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang -DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ -DWITH_MKL=OFF -DWITH_HIP=ON -DCMAKE_HIP_ARCHITECTURES=gfx1101 -DBUILD_TESTS=OFF -DWITH_CUDNN=ON -GNinja \&\& ninja -C build -j$(nproc) && cmake --install build --prefix /usr/local && ldconfig" did not complete successfully: exit code: 1
|
||
folzo@folzo-Corp:~/speaches/src$
|
||
|
||
Bonne progression — le compilateur est trouvé maintenant ! L'erreur est différente :
|
||
|
||
```
|
||
CMake Error: Intel OpenMP runtime libiomp5 not found
|
||
```
|
||
|
||
`-DWITH_MKL=OFF` devrait désactiver ça mais le CMakeLists.txt de CTranslate2-rocm le cherche quand même. Ajoute `-DOPENMP_RUNTIME=COMP` pour forcer l'OpenMP du compilateur (libomp déjà trouvé) au lieu d'Intel MKL :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace le bloc cmake :
|
||
|
||
```dockerfile
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DOPENMP_RUNTIME=COMP \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=OFF \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
```
|
||
|
||
Deux changements :
|
||
|
||
- `DOPENMP_RUNTIME=COMP` → utilise l'OpenMP du compilateur (libomp, déjà détecté)
|
||
- `DWITH_CUDNN=OFF` → on n'a pas cuDNN, inutile de le chercher
|
||
|
||
Relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# on est allé plus loin mais il y aencor eune erreur :
|
||
|
||
"folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 134.0s (20/20) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.12kB 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:latest 0.4s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:latest@sha256:4cac394b6b72846f8a85a7a0e577c6d61d4e17fe2ccee65d9451a8b3 0.0s
|
||
=> CACHED [stage-0 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git c 0.0s
|
||
=> CACHED [stage-0 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate](https://github.com/arlo-phoenix/CTranslate) 0.0s
|
||
=> [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cmake -S 50.6s
|
||
=> [stage-0 5/5] RUN cd /ct2/python \&\& pip3 install --break-system-packages -r install_requirements. 17.4s
|
||
=> [stage-1 2/10] COPY --from=0 /ct2-wheel.whl /ct2-wheel.whl 0.1s
|
||
=> [stage-1 3/10] COPY --from=0 /usr/local/lib/libctranslate2* /usr/local/lib/ 0.1s
|
||
=> [stage-1 4/10] RUN ldconfig 0.3s
|
||
=> [stage-1 5/10] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y python3-p 63.6s
|
||
=> [stage-1 6/10] COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv 0.2s
|
||
=> [stage-1 7/10] RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true 0.2s
|
||
=> [stage-1 8/10] WORKDIR /home/ubuntu/speaches 0.1s
|
||
=> [stage-1 9/10] COPY --chown=ubuntu . . 0.1s
|
||
=> ERROR [stage-1 10/10] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/ 0.2s
|
||
------
|
||
> [stage-1 10/10] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip install /ct2-wheel.whl --python .venv:
|
||
0.167 error: Required uv version `~=0.8.14` does not match the running version `0.10.4`
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 51)
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 57)
|
||
Dockerfile.rocm-ct2:53
|
||
--------------------
|
||
52 |
|
||
53 | >>> RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& \\
|
||
54 | >>> /bin/uv pip install /ct2-wheel.whl --python .venv
|
||
|
||
|
||
| 55 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip install /ct2-wheel.whl --python .venv" did not complete successfully: exit code: 2
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
"
|
||
|
||
Excellent progrès — CTranslate2 compile et la wheel est générée ! L'erreur finale est simple : `uv` version `0.10.4` (latest) est incompatible avec le `pyproject.toml` de speaches qui requiert `~=0.8.14`. Il suffit de fixer la version de `uv` :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace la ligne `COPY --from=ghcr.io/astral-sh/uv:latest` par la version exacte utilisée lors du premier build :
|
||
|
||
```dockerfile
|
||
COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv
|
||
```
|
||
|
||
C'est la même version que dans le `Dockerfile` original de speaches (visible au tout début quand on avait buildé `speaches:rocm`). Relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Les étapes 1 à 9 seront toutes en cache — seule l'étape 10 sera re-exécutée. Ce sera rapide.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
|
||
[+] Building 9.7s (20/20) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.12kB 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:0.8.22 0.4s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> [stage-0 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0 0.0s
|
||
=> CACHED [stage-0 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git c 0.0s
|
||
=> CACHED [stage-0 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate](https://github.com/arlo-phoenix/CTranslate) 0.0s
|
||
=> CACHED [stage-0 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cma 0.0s
|
||
=> CACHED [stage-0 5/5] RUN cd /ct2/python \&\& pip3 install --break-system-packages -r install_require 0.0s
|
||
=> CACHED [stage-1 2/10] COPY --from=0 /ct2-wheel.whl /ct2-wheel.whl 0.0s
|
||
=> CACHED [stage-1 3/10] COPY --from=0 /usr/local/lib/libctranslate2* /usr/local/lib/ 0.0s
|
||
=> CACHED [stage-1 4/10] RUN ldconfig 0.0s
|
||
=> CACHED [stage-1 5/10] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y pyt 0.0s
|
||
=> [stage-1 6/10] COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv 0.1s
|
||
=> [stage-1 7/10] RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true 0.2s
|
||
=> [stage-1 8/10] WORKDIR /home/ubuntu/speaches 0.1s
|
||
=> [stage-1 9/10] COPY --chown=ubuntu . . 0.1s
|
||
=> ERROR [stage-1 10/10] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/ 8.7s
|
||
------
|
||
> [stage-1 10/10] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip install /ct2-wheel.whl --python .venv:
|
||
0.229 Using CPython 3.12.3 interpreter at: /usr/bin/python3
|
||
0.229 Creating virtual environment at: .venv
|
||
0.267 Building speaches @ file:///home/ubuntu/speaches
|
||
0.329 Downloading pydantic-core (1.9MiB)
|
||
0.329 Downloading tiktoken (1.1MiB)
|
||
0.329 Downloading faster-whisper (1.1MiB)
|
||
0.329 Downloading cryptography (4.0MiB)
|
||
0.329 Downloading gradio (60.6MiB)
|
||
0.330 Downloading espeakng-loader (9.6MiB)
|
||
0.330 Downloading clldutils (1.6MiB)
|
||
0.330 Downloading av (33.9MiB)
|
||
0.331 Downloading soundfile (1.3MiB)
|
||
0.331 Downloading hf-xet (3.0MiB)
|
||
0.331 Downloading hf-transfer (3.4MiB)
|
||
0.331 Downloading setuptools (1.2MiB)
|
||
0.332 Downloading babel (9.1MiB)
|
||
0.332 Downloading lxml (4.7MiB)
|
||
0.332 Downloading scikit-learn (9.0MiB)
|
||
0.332 Downloading tokenizers (2.8MiB)
|
||
0.333 Downloading ruff (12.7MiB)
|
||
0.333 Downloading piper-tts (13.2MiB)
|
||
0.334 Downloading grpcio (5.6MiB)
|
||
0.334 Downloading pygments (1.1MiB)
|
||
0.334 Downloading scipy (34.0MiB)
|
||
0.334 Downloading numpy (15.9MiB)
|
||
0.335 Downloading pandas (12.1MiB)
|
||
0.340 Downloading sympy (5.9MiB)
|
||
0.340 Downloading brotli (2.8MiB)
|
||
0.340 Downloading pylibsrtp (2.1MiB)
|
||
0.341 Downloading ctranslate2 (37.0MiB)
|
||
0.341 Downloading pillow (4.3MiB)
|
||
0.342 Downloading onnxruntime-gpu (270.1MiB)
|
||
0.867 Downloading faster-whisper
|
||
0.891 Downloading tiktoken
|
||
0.907 Built speaches @ file:///home/ubuntu/speaches
|
||
0.911 Downloading soundfile
|
||
1.080 Downloading clldutils
|
||
1.126 Downloading pygments
|
||
1.156 Building pylatexenc==2.10
|
||
1.171 Downloading pydantic-core
|
||
1.202 Downloading pylibsrtp
|
||
1.308 Downloading setuptools
|
||
1.347 Downloading tokenizers
|
||
1.350 Downloading brotli
|
||
1.367 Downloading hf-xet
|
||
1.442 Downloading hf-transfer
|
||
1.598 Downloading pillow
|
||
1.598 Downloading cryptography
|
||
1.652 Downloading lxml
|
||
1.776 Downloading grpcio
|
||
1.967 Downloading sympy
|
||
1.969 Built pylatexenc==2.10
|
||
2.170 Downloading scikit-learn
|
||
2.193 Downloading babel
|
||
2.273 Downloading espeakng-loader
|
||
2.457 Downloading ruff
|
||
2.460 Downloading pandas
|
||
2.487 Downloading piper-tts
|
||
2.629 Downloading numpy
|
||
3.430 Downloading av
|
||
3.453 Downloading scipy
|
||
3.527 Downloading ctranslate2
|
||
4.019 Downloading gradio
|
||
6.029 Downloading onnxruntime-gpu
|
||
6.029 Prepared 163 packages in 5.77s
|
||
6.161 Installed 163 packages in 132ms
|
||
8.120 Bytecode compiled 10021 files in 1.95s
|
||
8.120 + aiofiles==23.2.1
|
||
8.120 + aioice==0.10.1
|
||
8.120 + aiortc==1.13.0
|
||
8.120 + aiostream==0.7.0
|
||
8.120 + annotated-doc==0.0.3
|
||
8.120 + annotated-types==0.7.0
|
||
8.120 + anyio==4.9.0
|
||
8.120 + asgiref==3.8.1
|
||
8.120 + attrs==24.3.0
|
||
8.120 + av==14.4.0
|
||
8.120 + babel==2.16.0
|
||
8.120 + brotli==1.1.0
|
||
8.120 + cachetools==6.1.0
|
||
8.120 + certifi==2024.8.30
|
||
8.120 + cffi==1.17.1
|
||
8.120 + charset-normalizer==3.3.2
|
||
8.120 + click==8.1.7
|
||
8.120 + clldutils==3.21.0
|
||
8.120 + colorama==0.4.6
|
||
8.120 + coloredlogs==15.0.1
|
||
8.120 + colorlog==6.9.0
|
||
8.120 + cryptography==44.0.1
|
||
8.121 + csvw==3.5.1
|
||
8.121 + ctranslate2==4.5.0
|
||
8.121 + deprecated==1.2.14
|
||
8.121 + distro==1.9.0
|
||
8.121 + dlinfo==1.2.1
|
||
8.121 + dnspython==2.7.0
|
||
8.121 + einops==0.8.1
|
||
8.121 + espeakng-loader==0.2.4
|
||
8.121 + fastapi==0.121.1
|
||
8.121 + faster-whisper==1.1.1
|
||
8.121 + ffmpy==0.4.0
|
||
8.121 + filelock==3.16.1
|
||
8.121 + flatbuffers==24.3.25
|
||
8.121 + fsspec==2024.9.0
|
||
8.121 + google-crc32c==1.6.0
|
||
8.121 + googleapis-common-protos==1.65.0
|
||
8.121 + gradio==5.49.1
|
||
8.121 + gradio-client==1.13.3
|
||
8.121 + groovy==0.1.2
|
||
8.121 + grpcio==1.67.1
|
||
8.121 + h11==0.14.0
|
||
8.121 + hf-transfer==0.1.8
|
||
8.121 + hf-xet==1.1.5
|
||
8.121 + httpcore==1.0.5
|
||
8.121 + httpx==0.28.1
|
||
8.121 + httpx-sse==0.4.1
|
||
8.121 + httpx-ws==0.7.2
|
||
8.121 + huggingface-hub==0.35.3
|
||
8.121 + humanfriendly==10.0
|
||
8.121 + idna==3.10
|
||
8.121 + ifaddr==0.2.0
|
||
8.121 + importlib-metadata==8.4.0
|
||
8.121 + isodate==0.7.2
|
||
8.121 + jinja2==3.1.4
|
||
8.121 + jiter==0.11.1
|
||
8.121 + joblib==1.4.2
|
||
8.121 + jsonschema==4.23.0
|
||
8.121 + jsonschema-specifications==2024.10.1
|
||
8.121 + kaldi-native-fbank==1.22.3
|
||
8.121 + kokoro-onnx==0.4.5
|
||
8.121 + language-tags==1.2.0
|
||
8.121 + lxml==5.3.0
|
||
8.121 + markdown==3.7
|
||
8.121 + markdown-it-py==3.0.0
|
||
8.122 + markupsafe==2.1.5
|
||
8.122 + mdurl==0.1.2
|
||
8.122 + mpmath==1.3.0
|
||
8.122 + numpy==2.3.1
|
||
8.122 + onnx-asr==0.7.0
|
||
8.122 + onnx-diarization==0.1.0
|
||
8.122 + onnx-dl==0.1.0
|
||
8.122 + onnxruntime-gpu==1.22.0
|
||
8.122 + openai==2.7.1
|
||
8.122 + opentelemetry-api==1.29.0
|
||
8.122 + opentelemetry-distro==0.50b0
|
||
8.122 + opentelemetry-exporter-otlp==1.29.0
|
||
8.122 + opentelemetry-exporter-otlp-proto-common==1.29.0
|
||
8.122 + opentelemetry-exporter-otlp-proto-grpc==1.29.0
|
||
8.122 + opentelemetry-exporter-otlp-proto-http==1.29.0
|
||
8.122 + opentelemetry-instrumentation==0.50b0
|
||
8.122 + opentelemetry-instrumentation-asgi==0.50b0
|
||
8.122 + opentelemetry-instrumentation-asyncio==0.50b0
|
||
8.122 + opentelemetry-instrumentation-fastapi==0.50b0
|
||
8.122 + opentelemetry-instrumentation-grpc==0.50b0
|
||
8.122 + opentelemetry-instrumentation-httpx==0.50b0
|
||
8.122 + opentelemetry-instrumentation-logging==0.50b0
|
||
8.122 + opentelemetry-instrumentation-openai==0.37.1
|
||
8.122 + opentelemetry-instrumentation-openai-v2==2.1b0
|
||
8.122 + opentelemetry-instrumentation-requests==0.50b0
|
||
8.122 + opentelemetry-instrumentation-threading==0.50b0
|
||
8.122 + opentelemetry-instrumentation-urllib==0.50b0
|
||
8.122 + opentelemetry-instrumentation-urllib3==0.50b0
|
||
8.122 + opentelemetry-proto==1.29.0
|
||
8.122 + opentelemetry-sdk==1.29.0
|
||
8.122 + opentelemetry-semantic-conventions==0.50b0
|
||
8.122 + opentelemetry-semantic-conventions-ai==0.4.2
|
||
8.122 + opentelemetry-util-http==0.50b0
|
||
8.122 + orjson==3.10.7
|
||
8.122 + packaging==24.1
|
||
8.122 + pandas==2.2.3
|
||
8.123 + phonemizer-fork==3.3.1
|
||
8.123 + pillow==10.4.0
|
||
8.123 + piper-tts==1.3.0
|
||
8.123 + protobuf==5.29.3
|
||
8.123 + pyannote-core==6.0.1
|
||
8.123 + pycparser==2.22
|
||
8.123 + pydantic==2.11.7
|
||
8.123 + pydantic-core==2.33.2
|
||
8.123 + pydantic-settings==2.10.1
|
||
8.123 + pydub==0.25.1
|
||
8.123 + pyee==13.0.0
|
||
8.123 + pygments==2.18.0
|
||
8.123 + pylatexenc==2.10
|
||
8.123 + pylibsrtp==0.11.0
|
||
8.123 + pyopenssl==25.0.0
|
||
8.123 + pyparsing==3.2.1
|
||
8.123 + python-dateutil==2.9.0.post0
|
||
8.123 + python-dotenv==1.0.1
|
||
8.123 + python-multipart==0.0.20
|
||
8.123 + pytz==2024.2
|
||
8.123 + pyyaml==6.0.2
|
||
8.123 + rdflib==7.1.2
|
||
8.123 + referencing==0.35.1
|
||
8.123 + regex==2024.9.11
|
||
8.123 + requests==2.32.3
|
||
8.123 + rfc3986==1.5.0
|
||
8.123 + rich==13.8.1
|
||
8.123 + rpds-py==0.22.3
|
||
8.123 + ruff==0.14.4
|
||
8.123 + safehttpx==0.1.6
|
||
8.123 + scikit-learn==1.7.2
|
||
8.124 + scipy==1.16.3
|
||
8.124 + segments==2.2.1
|
||
8.124 + semantic-version==2.10.0
|
||
8.124 + setuptools==75.2.0
|
||
8.124 + shellingham==1.5.4
|
||
8.124 + six==1.16.0
|
||
8.124 + sniffio==1.3.1
|
||
8.124 + sortedcontainers==2.4.0
|
||
8.124 + sounddevice==0.5.2
|
||
8.124 + soundfile==0.13.1
|
||
8.124 + speaches==0.1.0 (from file:///home/ubuntu/speaches)
|
||
8.124 + starlette==0.41.3
|
||
8.124 + sympy==1.13.3
|
||
8.124 + tabulate==0.9.0
|
||
8.124 + threadpoolctl==3.6.0
|
||
8.124 + tiktoken==0.8.0
|
||
8.124 + tokenizers==0.20.1
|
||
8.124 + tomlkit==0.12.0
|
||
8.124 + tqdm==4.66.5
|
||
8.124 + typer==0.12.5
|
||
8.124 + typing-extensions==4.12.2
|
||
8.124 + typing-inspection==0.4.1
|
||
8.124 + tzdata==2024.2
|
||
8.124 + uritemplate==4.1.1
|
||
8.124 + urllib3==2.2.3
|
||
8.124 + uvicorn==0.35.0
|
||
8.124 + websockets==14.2
|
||
8.124 + wrapt==1.16.0
|
||
8.124 + wsproto==1.2.0
|
||
8.124 + zipp==3.20.2
|
||
8.186 error: The wheel filename "ct2-wheel.whl" is invalid: Must have a Python tag
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 51)
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 57)
|
||
Dockerfile.rocm-ct2:53
|
||
--------------------
|
||
52 |
|
||
53 | >>> RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& \\
|
||
54 | >>> /bin/uv pip install /ct2-wheel.whl --python .venv
|
||
|
||
|
||
| 55 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip install /ct2-wheel.whl --python .venv" did not complete successfully: exit code: 2
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
Presque ! Tout s'installe parfaitement, dernière erreur mineure : `uv` refuse d'installer la wheel renommée en `ct2-wheel.whl` car le nom ne respecte pas le format PEP 427 (`nom-version-pytag-abitag-platformtag.whl`). Il faut copier la wheel avec son **vrai nom** :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Remplace ces lignes dans le **stage-0** :
|
||
|
||
```dockerfile
|
||
cp dist/*.whl /ct2-wheel.whl
|
||
```
|
||
|
||
Par :
|
||
|
||
```dockerfile
|
||
cp dist/*.whl /
|
||
```
|
||
|
||
Et dans le **stage-1**, remplace :
|
||
|
||
```dockerfile
|
||
COPY --from=0 /ct2-wheel.whl /ct2-wheel.whl
|
||
```
|
||
|
||
Par :
|
||
|
||
```dockerfile
|
||
COPY --from=0 /ctranslate2*.whl /
|
||
```
|
||
|
||
Et remplace la ligne d'installation :
|
||
|
||
```dockerfile
|
||
/bin/uv pip install /ct2-wheel.whl --python .venv
|
||
```
|
||
|
||
Par :
|
||
|
||
```dockerfile
|
||
/bin/uv pip install /ctranslate2*.whl --python .venv
|
||
```
|
||
|
||
Relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Tout sera en cache sauf la dernière étape — ce sera rapide.
|
||
|
||
---
|
||
|
||
# trop compliquer peux tu me regener le fichier en entier stp, je vais faire des erreurs sinon
|
||
|
||
Voici le `Dockerfile.rocm-ct2` complet et corrigé :
|
||
|
||
```dockerfile
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete AS builder
|
||
|
||
# ── Dépendances build
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev python3-pip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# ── Clone CTranslate2-rocm
|
||
RUN git clone --recurse-submodules \
|
||
https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2
|
||
|
||
# ── Compile CTranslate2-rocm pour gfx1101 (RX 7800 XT)
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DOPENMP_RUNTIME=COMP \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=OFF \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
|
||
# ── Build wheel Python CTranslate2-rocm
|
||
RUN cd /ct2/python && \
|
||
pip3 install --break-system-packages -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
cp dist/*.whl /
|
||
|
||
# ── Image finale
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=builder /ctranslate2*.whl /
|
||
COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable && \
|
||
/bin/uv pip install /ctranslate2*.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:/opt/rocm-6.3.4/lib:$LD_LIBRARY_PATH
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
```
|
||
|
||
Copie-colle ce contenu dans nano :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Puis **Ctrl+X**, **Y**, **Entrée** pour sauvegarder. Lance le build :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Les étapes compilées seront en cache — seule la dernière étape `uv pip install` sera re-exécutée.
|
||
|
||
---
|
||
|
||
# du coup c'est fini ? :
|
||
|
||
folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 152.6s (21/21) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.16kB 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:0.8.22 0.4s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED [builder 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> CACHED [builder 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git c 0.0s
|
||
=> CACHED [builder 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate](https://github.com/arlo-phoenix/CTranslate) 0.0s
|
||
=> CACHED [builder 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cma 0.0s
|
||
=> [builder 5/5] RUN cd /ct2/python \&\& pip3 install --break-system-packages -r install_requirements. 17.6s
|
||
=> [stage-1 2/10] COPY --from=builder /ctranslate2*.whl / 0.4s
|
||
=> [stage-1 3/10] COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/ 0.1s
|
||
=> [stage-1 4/10] RUN ldconfig 0.3s
|
||
=> [stage-1 5/10] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y python3-p 64.7s
|
||
=> [stage-1 6/10] COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv 0.2s
|
||
=> [stage-1 7/10] RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true 0.2s
|
||
=> [stage-1 8/10] WORKDIR /home/ubuntu/speaches 0.1s
|
||
=> [stage-1 9/10] COPY --chown=ubuntu . . 0.1s
|
||
=> [stage-1 10/10] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip 8.9s
|
||
=> exporting to image 59.0s
|
||
=> => exporting layers 44.6s
|
||
=> => exporting manifest sha256:1dd298d1b3822fc9d2fc6d28438b441358d73977b3121fa3ba2304efd2840daa 0.0s
|
||
=> => exporting config sha256:ade63f546f7be00555c12f03171b1b2246fb3e484aa0ea1322f6b947fc6b66a9 0.0s
|
||
=> => exporting attestation manifest sha256:0bbb942dd7e7b8c230c5f28c77d786e67e6dd271d36f5ee34549b066c988e 0.1s
|
||
=> => exporting manifest list sha256:d29e09ad6ae6d74d1cd2fedf7715a91aaee05119366623cf165515b78f44ba1f 0.0s
|
||
=> => naming to docker.io/library/speaches:rocm-ct2 0.0s
|
||
=> => unpacking to docker.io/library/speaches:rocm-ct2 14.1s
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 58)
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 52)
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
**Build réussi ! 🎉** `speaches:rocm-ct2` est prêt. Maintenant il faut tester que CTranslate2 voit bien le GPU, puis relancer le stack.
|
||
|
||
## 1. Vérifie que ROCm est détecté
|
||
|
||
```bash
|
||
docker run --rm \
|
||
--device /dev/kfd \
|
||
--device /dev/dri \
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \
|
||
speaches:rocm-ct2 \
|
||
.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
Si tu vois `float16`, `int8_float16` etc. → le GPU est reconnu ✅
|
||
|
||
## 2. Mets à jour docker-compose.yml
|
||
|
||
```bash
|
||
nano ~/speaches/docker-compose.yml
|
||
```
|
||
|
||
Change ces lignes :
|
||
|
||
```yaml
|
||
image: speaches:rocm-ct2 # ← nouvelle image
|
||
environment:
|
||
- WHISPER__MODEL=Systran/faster-whisper-large-v3
|
||
- WHISPER__LANGUAGE=fr
|
||
- WHISPER__DEVICE=cuda # ← GPU
|
||
- WHISPER__COMPUTE_TYPE=float16 # ← float16 sur GPU
|
||
```
|
||
|
||
|
||
## 3. Relance le stack
|
||
|
||
```bash
|
||
cd ~/speaches
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
Tu devrais voir le modèle se charger sur le GPU au lieu du CPU.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ docker run --rm \\
|
||
|
||
--device /dev/kfd \\
|
||
--device /dev/dri \\
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \\
|
||
speaches:rocm-ct2 \\
|
||
.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
Traceback (most recent call last):
|
||
|
||
```
|
||
File "<string>", line 2, in <module>
|
||
```
|
||
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/ctranslate2/__init__.py", line 21, in <module>
|
||
from ctranslate2._ext import (
|
||
ImportError: libomp.so: cannot open shared object file: No such file or directory
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
`libomp.so` n'est pas dans l'image finale — elle vient de l'image ROCm du builder mais n'a pas été copiée. Fix rapide dans le Dockerfile :
|
||
|
||
```bash
|
||
nano ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Dans le **stage-1**, ajoute `libomp-dev` dans le `apt-get install` :
|
||
|
||
```dockerfile
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg libomp-dev \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
```
|
||
|
||
Ou encore mieux, copie directement `libomp.so` depuis le builder (plus léger) en ajoutant après la ligne `COPY --from=builder /usr/local/lib/libctranslate2*` :
|
||
|
||
```dockerfile
|
||
COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/
|
||
```
|
||
|
||
Relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Tout sera en cache sauf les étapes après le changement — moins de 2 minutes.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
|
||
[+] Building 62.1s (9/20) docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.14kB 0.0s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:0.8.22 0.6s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> CACHED [builder 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> FROM ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0f12edd 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0 0.0s
|
||
=> [builder 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pip 61.1s
|
||
=> ERROR [builder 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate2](https://github.com/arlo-phoenix/CTranslate2) 0.3s
|
||
------
|
||
> [builder 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate2-rocm.git](https://github.com/arlo-phoenix/CTranslate2-rocm.git) /ct2:
|
||
0.249 /bin/sh: 1: git: not found
|
||
------
|
||
|
||
2 warnings found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 52)
|
||
- UndefinedVar: Usage of undefined variable '\$LD_LIBRARY_PATH' (line 58)
|
||
Dockerfile.rocm-ct2:9
|
||
--------------------
|
||
8 | \# ── Clone CTranslate2-rocm
|
||
9 | >>> RUN git clone --recurse-submodules \\
|
||
10 | >>> [https://github.com/arlo-phoenix/CTranslate2-rocm.git](https://github.com/arlo-phoenix/CTranslate2-rocm.git) /ct2
|
||
|
||
|
||
| 11 |
|
||
| :-- |
|
||
|
||
ERROR: failed to build: failed to solve: process "/bin/sh -c git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate2-rocm.git](https://github.com/arlo-phoenix/CTranslate2-rocm.git) /ct2" did not complete successfully: exit code: 127
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
Le cache a été invalidé et `git` a disparu du `apt-get install` du builder (tu as probablement modifié le mauvais bloc). Voici le fichier complet corrigé, régénère-le entièrement :
|
||
|
||
```bash
|
||
cat > ~/speaches/src/Dockerfile.rocm-ct2 << 'EOF'
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete AS builder
|
||
|
||
# ── Dépendances build
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev python3-pip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
# ── Clone CTranslate2-rocm
|
||
RUN git clone --recurse-submodules \
|
||
https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2
|
||
|
||
# ── Compile CTranslate2-rocm pour gfx1101 (RX 7800 XT)
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DOPENMP_RUNTIME=COMP \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=OFF \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
|
||
# ── Build wheel Python
|
||
RUN cd /ct2/python && \
|
||
pip3 install --break-system-packages -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
cp dist/*.whl /
|
||
|
||
# ── Image finale
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=builder /ctranslate2*.whl /
|
||
COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable && \
|
||
/bin/uv pip install /ctranslate2*.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:/opt/rocm-6.3.4/lib
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
EOF
|
||
```
|
||
|
||
Cette fois j'utilise `cat >` pour éviter toute erreur de copie-colle dans nano. Puis relance :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# normalement c'est bon :
|
||
|
||
folzo@folzo-Corp:~/speaches/src\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 129.1s (22/22) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.20kB 0.0s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:0.8.22 0.4s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0 0.0s
|
||
=> [builder 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> CACHED [builder 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git c 0.0s
|
||
=> CACHED [builder 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate](https://github.com/arlo-phoenix/CTranslate) 0.0s
|
||
=> CACHED [builder 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cma 0.0s
|
||
=> CACHED [builder 5/5] RUN cd /ct2/python \&\& pip3 install --break-system-packages -r install_require 0.0s
|
||
=> CACHED [stage-1 2/11] COPY --from=builder /ctranslate2*.whl / 0.0s
|
||
=> CACHED [stage-1 3/11] COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/ 0.0s
|
||
=> [stage-1 4/11] COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/ 0.1s
|
||
=> [stage-1 5/11] RUN ldconfig 0.2s
|
||
=> [stage-1 6/11] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y python3-p 59.3s
|
||
=> [stage-1 7/11] COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv 0.2s
|
||
=> [stage-1 8/11] RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true 0.2s
|
||
=> [stage-1 9/11] WORKDIR /home/ubuntu/speaches 0.1s
|
||
=> [stage-1 10/11] COPY --chown=ubuntu . . 0.1s
|
||
=> [stage-1 11/11] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip 8.9s
|
||
=> exporting to image 59.3s
|
||
=> => exporting layers 45.1s
|
||
=> => exporting manifest sha256:e2ebfb6743d5668e26b1f16ee476cf585c1382d6f5b7906ce155a2042da931d9 0.0s
|
||
=> => exporting config sha256:927bb261eddcd487aa27358112308714d91c5b831845eff8292e68f17e946002 0.0s
|
||
=> => exporting attestation manifest sha256:dd40ff2a2458b3c692d6fee034693b7d78ea33227ba6527f7b0fb708d4c32 0.1s
|
||
=> => exporting manifest list sha256:08366edde66c5a5f761ae602bbc2f0c7298e65b26bece2e5210694747ece4e0a 0.0s
|
||
=> => naming to docker.io/library/speaches:rocm-ct2 0.0s
|
||
=> => unpacking to docker.io/library/speaches:rocm-ct2 13.9s
|
||
|
||
1 warning found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 53)
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
Build parfait, plus aucune erreur ! Teste maintenant que le GPU est bien détecté :
|
||
|
||
```bash
|
||
docker run --rm \
|
||
--device /dev/kfd \
|
||
--device /dev/dri \
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \
|
||
speaches:rocm-ct2 \
|
||
.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
Si tu vois `float16` dans la liste → lance le stack :
|
||
|
||
```bash
|
||
cd ~/speaches
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
Et surveille dans les logs que le modèle charge sur `cuda` au lieu de `cpu`. Tu peux aussi vérifier la VRAM en temps réel depuis un autre terminal :
|
||
|
||
```bash
|
||
watch -n1 rocm-smi
|
||
```
|
||
|
||
La transcription devrait être **5 à 10x plus rapide** qu'en CPU. 🚀
|
||
|
||
---
|
||
|
||
# log apres un test :
|
||
|
||
return self.model.encode(features, to_cpu=to_cpu)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
RuntimeError: Conv1D on GPU currently requires the cuDNN library which is not integrated in this build
|
||
2026-02-21 18:07:44,815:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: f0ab6f70-dd33-4d48-a580-8ef47f9bb348.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="f0ab6f70-dd33-4d48-a580-8ef47f9bb348.mp3"'}), size: 35565
|
||
2026-02-21 18:07:44,904:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 4.38s of audio in 0.08933s (RTF: 0.02039520114276996)
|
||
2026-02-21 18:07:44,904:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
|
||
2026-02-21 18:07:44,908:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:silero_vad_v5 model already loaded
|
||
2026-02-21 18:07:44,908:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1
|
||
2026-02-21 18:07:44,917:DEBUG:speaches.executors.silero_vad_v5:__call__:138:VAD model inference took 0.0091s
|
||
2026-02-21 18:07:44,918:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0
|
||
2026-02-21 18:07:44,918:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading
|
||
2026-02-21 18:07:44,918:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0099s for 4.38s audio
|
||
2026-02-21 18:07:44,918:DEBUG:speaches.executors.shared.base_model_manager:load_model:138:Systran/faster-whisper-large-v3 model already loaded
|
||
2026-02-21 18:07:44,918:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:81:Model was set to expire in 300s, cancelling
|
||
2026-02-21 18:07:44,918:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for Systran/faster-whisper-large-v3, self.ref_count=1
|
||
2026-02-21 18:07:44,918:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:04.380
|
||
2026-02-21 18:07:44,918:INFO:faster_whisper:transcribe:428:VAD filter removed 00:02.332 of audio
|
||
2026-02-21 18:07:44,935:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for Systran/faster-whisper-large-v3, self.ref_count=0
|
||
2026-02-21 18:07:44,935:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model Systran/faster-whisper-large-v3 is idle, scheduling offload in 300s
|
||
INFO: 192.168.1.27:54094 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error
|
||
ERROR: Exception in ASGI application
|
||
Traceback (most recent call last):
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
|
||
result = await app( \# type: ignore[func-returns-value]
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
|
||
return await self.app(scope, receive, send)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1134, in __call__
|
||
await super().__call__(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
|
||
await self.middleware_stack(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
|
||
raise exc
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
|
||
await self.app(scope, receive, _send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
|
||
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
||
raise exc
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
||
await app(scope, receive, sender)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
|
||
await self.app(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
|
||
await self.middleware_stack(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
|
||
await route.handle(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
|
||
await self.app(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 125, in app
|
||
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
|
||
raise exc
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|
||
await app(scope, receive, sender)
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 111, in app
|
||
response = await f(request)
|
||
^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 391, in app
|
||
raw_response = await run_endpoint_function(
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 292, in run_endpoint_function
|
||
return await run_in_threadpool(dependant.call, **values)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/concurrency.py", line 39, in run_in_threadpool
|
||
return await anyio.to_thread.run_sync(func, *args)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/to_thread.py", line 56, in run_sync
|
||
return await get_async_backend().run_sync_in_worker_thread(
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 2470, in run_sync_in_worker_thread
|
||
return await future
|
||
^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 967, in run
|
||
result = context.run(func, *args)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/routers/stt.py", line 171, in transcribe_file
|
||
res = transcription_executor.model_manager.handle_transcription_request(transcription_request)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 231, in handle_transcription_request
|
||
return self.handle_non_streaming_transcription_request(request, **kwargs)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/tracing.py", line 31, in wrapper
|
||
return func(*args, **kwargs)
|
||
^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/speaches/executors/whisper.py", line 161, in handle_non_streaming_transcription_request
|
||
segments, transcription_info = whisper_model.transcribe(
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 451, in transcribe
|
||
) = self.model.detect_language(
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1777, in detect_language
|
||
encoder_output = self.encode(
|
||
^^^^^^^^^^^^
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/faster_whisper/transcribe.py", line 1358, in encode
|
||
return self.model.encode(features, to_cpu=to_cpu)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
RuntimeError: Conv1D on GPU currently requires the cuDNN library which is not integrated in this build
|
||
|
||
L'erreur est claire : CTranslate2-rocm a été compilé sans le support `cuDNN` (`-DWITH_CUDNN=OFF`) mais Whisper utilise `Conv1D` qui en a besoin sur GPU. Il faut activer `WITH_CUDNN=ON` dans le build.
|
||
|
||
Mais sur ROCm, `cuDNN` s'appelle **MIOpen**. Il faut compiler avec `-DWITH_CUDNN=ON` ET les libs MIOpen disponibles dans l'image ROCm complète :
|
||
|
||
```bash
|
||
cat > ~/speaches/src/Dockerfile.rocm-ct2 << 'EOF'
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete AS builder
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev python3-pip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
RUN git clone --recurse-submodules \
|
||
https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2
|
||
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DOPENMP_RUNTIME=COMP \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-DCUDnn_INCLUDE_DIR=/opt/rocm-6.3.4/include \
|
||
-DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
|
||
RUN cd /ct2/python && \
|
||
pip3 install --break-system-packages -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
cp dist/*.whl /
|
||
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=builder /ctranslate2*.whl /
|
||
COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable && \
|
||
/bin/uv pip install /ctranslate2*.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:/opt/rocm-6.3.4/lib
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
EOF
|
||
```
|
||
|
||
Le seul changement est dans le bloc cmake :
|
||
|
||
- `-DWITH_CUDNN=ON` — réactivé
|
||
- `-DCUDnn_INCLUDE_DIR` et `-DCUDnn_LIBRARY` pointent vers **MIOpen** de ROCm
|
||
|
||
Relance le build — les étapes 1 à 3 seront en cache, seule la compilation cmake repart :
|
||
|
||
```bash
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches\$ docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
|
||
[+] Building 0.1s (1/1) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2B 0.0s
|
||
ERROR: failed to build: failed to solve: failed to read dockerfile: open Dockerfile.rocm-ct2: no such file or directory
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Tu es dans `~/speaches` mais le Dockerfile est dans `~/speaches/src`. Soit tu te déplaces, soit tu précises le chemin :
|
||
|
||
```bash
|
||
docker build -f ~/speaches/src/Dockerfile.rocm-ct2 -t speaches:rocm-ct2 ~/speaches/src/
|
||
```
|
||
|
||
Ou alors recrée le fichier directement au bon endroit :
|
||
|
||
```bash
|
||
cat > ~/speaches/src/Dockerfile.rocm-ct2 << 'EOF'
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete AS builder
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
git cmake ninja-build python3-dev python3-pip \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
RUN git clone --recurse-submodules \
|
||
https://github.com/arlo-phoenix/CTranslate2-rocm.git /ct2
|
||
|
||
RUN cd /ct2 && \
|
||
PYTORCH_ROCM_ARCH=gfx1101 \
|
||
HIP_PATH=/opt/rocm-6.3.4 \
|
||
cmake -S . -B build \
|
||
-DCMAKE_CXX_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DCMAKE_C_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang \
|
||
-DCMAKE_HIP_COMPILER=/opt/rocm-6.3.4/lib/llvm/bin/clang++ \
|
||
-DWITH_MKL=OFF \
|
||
-DOPENMP_RUNTIME=COMP \
|
||
-DWITH_HIP=ON \
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1101 \
|
||
-DBUILD_TESTS=OFF \
|
||
-DWITH_CUDNN=ON \
|
||
-DCUDnn_INCLUDE_DIR=/opt/rocm-6.3.4/include \
|
||
-DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so \
|
||
-GNinja && \
|
||
ninja -C build -j$(nproc) && \
|
||
cmake --install build --prefix /usr/local && \
|
||
ldconfig
|
||
|
||
RUN cd /ct2/python && \
|
||
pip3 install --break-system-packages -r install_requirements.txt && \
|
||
python3 setup.py bdist_wheel && \
|
||
cp dist/*.whl /
|
||
|
||
FROM rocm/dev-ubuntu-24.04:6.3.4-complete
|
||
|
||
COPY --from=builder /ctranslate2*.whl /
|
||
COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/
|
||
COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/
|
||
RUN ldconfig
|
||
|
||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||
python3-pip ffmpeg \
|
||
&& rm -rf /var/lib/apt/lists/*
|
||
|
||
COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv
|
||
|
||
RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true
|
||
WORKDIR /home/ubuntu/speaches
|
||
COPY --chown=ubuntu . .
|
||
|
||
RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable && \
|
||
/bin/uv pip install /ctranslate2*.whl --python .venv
|
||
|
||
ENV HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
ENV LD_LIBRARY_PATH=/usr/local/lib:/opt/rocm-6.3.4/lib
|
||
|
||
EXPOSE 8000
|
||
CMD [".venv/bin/uvicorn", "speaches.main:create_app", \
|
||
"--host", "0.0.0.0", "--port", "8000", "--factory"]
|
||
EOF
|
||
```
|
||
|
||
Puis :
|
||
|
||
```bash
|
||
cd ~/speaches/src
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# normalement il a fini : folzo@folzo-Corp:~/speaches\$ cd ~/speaches/src
|
||
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
[+] Building 192.6s (22/22) FINISHED docker:default
|
||
=> [internal] load build definition from Dockerfile.rocm-ct2 0.0s
|
||
=> => transferring dockerfile: 2.14kB 0.0s
|
||
=> [internal] load metadata for docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete 0.0s
|
||
=> [internal] load metadata for ghcr.io/astral-sh/uv:0.8.22 0.4s
|
||
=> [internal] load .dockerignore 0.0s
|
||
=> => transferring context: 110B 0.0s
|
||
=> CACHED [builder 1/5] FROM docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32 0.0s
|
||
=> => resolve docker.io/rocm/dev-ubuntu-24.04:6.3.4-complete@sha256:76e99e263ef6ce69ba5d32905623c801fff3f 0.0s
|
||
=> CACHED FROM ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a 0.0s
|
||
=> => resolve ghcr.io/astral-sh/uv:0.8.22@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0 0.0s
|
||
=> [internal] load build context 0.0s
|
||
=> => transferring context: 4.06kB 0.0s
|
||
=> CACHED [builder 2/5] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y git c 0.0s
|
||
=> CACHED [builder 3/5] RUN git clone --recurse-submodules [https://github.com/arlo-phoenix/CTranslate](https://github.com/arlo-phoenix/CTranslate) 0.0s
|
||
=> [builder 4/5] RUN cd /ct2 \&\& PYTORCH_ROCM_ARCH=gfx1101 HIP_PATH=/opt/rocm-6.3.4 cmake -S 50.1s
|
||
=> [builder 5/5] RUN cd /ct2/python \&\& pip3 install --break-system-packages -r install_requirements. 16.9s
|
||
=> [stage-1 2/11] COPY --from=builder /ctranslate2*.whl / 0.4s
|
||
=> [stage-1 3/11] COPY --from=builder /usr/local/lib/libctranslate2* /usr/local/lib/ 0.1s
|
||
=> [stage-1 4/11] COPY --from=builder /opt/rocm-6.3.4/lib/llvm/lib/libomp.so /usr/local/lib/ 0.1s
|
||
=> [stage-1 5/11] RUN ldconfig 0.2s
|
||
=> [stage-1 6/11] RUN apt-get update \&\& DEBIAN_FRONTEND=noninteractive apt-get install -y python3-p 56.2s
|
||
=> [stage-1 7/11] COPY --from=ghcr.io/astral-sh/uv:0.8.22 /uv /bin/uv 0.2s
|
||
=> [stage-1 8/11] RUN useradd --create-home --shell /bin/bash --uid 1000 ubuntu || true 0.2s
|
||
=> [stage-1 9/11] WORKDIR /home/ubuntu/speaches 0.1s
|
||
=> [stage-1 10/11] COPY --chown=ubuntu . . 0.1s
|
||
=> [stage-1 11/11] RUN /bin/uv sync --frozen --compile-bytecode --no-dev --no-editable \&\& /bin/uv pip 8.8s
|
||
=> exporting to image 58.3s
|
||
=> => exporting layers 44.2s
|
||
=> => exporting manifest sha256:b20e7cd9203afb6585754225862fa50e5bcb86841e0f50146c7aa30e63a4b0e8 0.0s
|
||
=> => exporting config sha256:9256afc3cfda94cba45c1f98afd0e1ac2e7d1bfa5dd224cd08a504bb53e209f1 0.0s
|
||
=> => exporting attestation manifest sha256:42e2c94beb748e1721b3e660d0ce28d71b5e3da2a5356619a80a6cbde2548 0.1s
|
||
=> => exporting manifest list sha256:aa096042ec20418b0f5ea4def6ab3432b5d411daf55a08015ea11672ed93a3af 0.0s
|
||
=> => naming to docker.io/library/speaches:rocm-ct2 0.0s
|
||
=> => unpacking to docker.io/library/speaches:rocm-ct2 13.9s
|
||
|
||
1 warning found (use docker --debug to expand):
|
||
|
||
- CopyIgnoredFile: Attempting to Copy file "." that is excluded by .dockerignore (line 50)
|
||
folzo@folzo-Corp:~/speaches/src\$ .
|
||
|
||
Build terminé sans erreur ! Teste d'abord le GPU avant de relancer le stack :
|
||
|
||
```bash
|
||
docker run --rm \
|
||
--device /dev/kfd \
|
||
--device /dev/dri \
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \
|
||
speaches:rocm-ct2 \
|
||
.venv/bin/python3 -c "
|
||
import ctranslate2
|
||
print('Version CT2:', ctranslate2.__version__)
|
||
print('ROCm compute types:', ctranslate2.get_supported_compute_types('cuda'))
|
||
"
|
||
```
|
||
|
||
Si tu vois `float16` → lance le stack :
|
||
|
||
```bash
|
||
cd ~/speaches
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
Et vérifie la VRAM dans un autre terminal :
|
||
|
||
```bash
|
||
watch -n1 rocm-smi
|
||
```
|
||
|
||
Tu devrais voir la VRAM augmenter quand le modèle `large-v3` se charge (~3GB), et le GPU s'activer lors d'une transcription.
|
||
|
||
---
|
||
|
||
# autre probleme le serveur effi ubunutu ne repond plus comment connaitre son etat ?
|
||
|
||
Pour diagnostiquer un serveur Ubuntu qui ne répond plus, voici les étapes par ordre de priorité :
|
||
|
||
## Vérifier la connectivité réseau
|
||
|
||
```bash
|
||
ping -c 4 <IP_serveur>
|
||
traceroute <IP_serveur>
|
||
```
|
||
|
||
|
||
## Tenter une connexion SSH
|
||
|
||
```bash
|
||
ssh ubuntu@<IP_serveur> -v # -v pour voir où ça bloque
|
||
```
|
||
|
||
Si SSH timeout, essaie avec un timeout court :
|
||
|
||
```bash
|
||
ssh -o ConnectTimeout=5 ubuntu@<IP_serveur>
|
||
```
|
||
|
||
|
||
## Via ton réseau local (si même LAN)
|
||
|
||
```bash
|
||
# Scanner les ports ouverts
|
||
nmap -Pn <IP_serveur>
|
||
|
||
# Vérifier si la machine répond ARP (même si ping bloqué)
|
||
arp -n | grep <IP_serveur>
|
||
```
|
||
|
||
|
||
## Si tu as accès au hyperviseur / Proxmox
|
||
|
||
```bash
|
||
# Lister les VMs
|
||
qm list
|
||
|
||
# Console directe sans réseau
|
||
qm terminal <VMID>
|
||
```
|
||
|
||
|
||
## Si c'est une machine physique accessible
|
||
|
||
Accès console direct ou IPMI/iDRAC si disponible :
|
||
|
||
```bash
|
||
ipmitool -H <IP_IPMI> -U admin -P <pass> chassis status
|
||
ipmitool -H <IP_IPMI> -U admin -P <pass> sol activate # console série
|
||
```
|
||
|
||
|
||
***
|
||
|
||
**Quel est ton setup pour ce serveur ?** (VM Proxmox, machine physique, accès réseau local ou distant ?) → je peux affiner le diagnostic.
|
||
|
||
---
|
||
|
||
# le ping repond :
|
||
|
||
folzo@folzo-Corp:~/speaches\$ ping -c 4 192.168.1.27
|
||
PING 192.168.1.27 (192.168.1.27) 56(84) bytes of data.
|
||
64 bytes from 192.168.1.27: icmp_seq=1 ttl=64 time=2.81 ms
|
||
64 bytes from 192.168.1.27: icmp_seq=2 ttl=64 time=2.69 ms
|
||
64 bytes from 192.168.1.27: icmp_seq=3 ttl=64 time=2.68 ms
|
||
64 bytes from 192.168.1.27: icmp_seq=4 ttl=64 time=2.77 ms
|
||
|
||
--- 192.168.1.27 ping statistics ---
|
||
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
|
||
rtt min/avg/max/mdev = 2.682/2.738/2.808/0.054 ms
|
||
folzo@folzo-Corp:~/speaches\$ traceroute 192.168.1.27
|
||
La commande « traceroute » n'a pas été trouvée, mais peut être installée avec :
|
||
sudo apt install inetutils-traceroute \# version 2:2.6-1ubuntu3.1, or
|
||
sudo apt install traceroute \# version 1:2.1.6-1
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Masintenant comment voir son etat de charge et l'etat des docker qu'elle a ?
|
||
|
||
Le ping répond donc la machine est vivante — probablement SSH ou un service qui rame. Voici comment tout voir en une fois :
|
||
|
||
## Connexion SSH + état instantané
|
||
|
||
```bash
|
||
ssh ubuntu@192.168.1.27
|
||
```
|
||
|
||
Une fois connecté, charge système :
|
||
|
||
```bash
|
||
# CPU / RAM / load average en temps réel
|
||
htop
|
||
|
||
# ou version simple sans htop
|
||
top -b -n 1 | head -20
|
||
|
||
# Charge en une ligne
|
||
uptime
|
||
```
|
||
|
||
|
||
## État des conteneurs Docker
|
||
|
||
```bash
|
||
# Tous les conteneurs (running + stopped)
|
||
docker ps -a
|
||
|
||
# Stats CPU/RAM en temps réel de tous les conteneurs
|
||
docker stats
|
||
|
||
# Logs d'un conteneur spécifique
|
||
docker logs --tail 50 -f <nom_conteneur>
|
||
```
|
||
|
||
|
||
## Vérifier si c'est le disque qui sature (cause fréquente de freeze)
|
||
|
||
```bash
|
||
# Espace disque
|
||
df -h
|
||
|
||
# I/O disque en temps réel
|
||
iostat -x 1 5
|
||
|
||
# Processus qui écrivent/lisent le plus
|
||
iotop -o
|
||
```
|
||
|
||
|
||
## Si SSH ne répond toujours pas
|
||
|
||
Le ping répond mais SSH peut être surchargé ou crashé :
|
||
|
||
```bash
|
||
# Depuis ta machine, tenter sur le port SSH
|
||
nc -zv 192.168.1.27 22
|
||
|
||
# Si le port est fermé → service SSH down, faut aller en console physique
|
||
```
|
||
|
||
|
||
***
|
||
|
||
**Qu'est-ce que tu vois avec `ssh ubuntu@192.168.1.27` ?** Timeout, connexion refusée, ou ça se connecte ?
|
||
<span style="display:none">[^28_1][^28_2][^28_3]</span>
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^28_1]: image.jpg
|
||
|
||
[^28_2]: image.jpg
|
||
|
||
[^28_3]: paste.txt
|
||
|
||
|
||
---
|
||
|
||
# j'ai fait un reboot au server mais du coup il y a un probleme de connection avec openwebui : Comment faire pour trouver la panne ?
|
||
|
||
L'erreur `500: Open WebUI: Server Connection Error` signifie qu'Open WebUI tourne mais ne peut pas joindre le backend (Ollama ou l'API configurée). Après un reboot, c'est souvent un conteneur qui n'a pas redémarré.
|
||
|
||
## 1. Vérifier l'état des conteneurs
|
||
|
||
```bash
|
||
ssh ubuntu@192.168.1.27
|
||
docker ps -a
|
||
```
|
||
|
||
Cherche les conteneurs avec le status `Exited` ou `Restarting` — ce sont les coupables.
|
||
|
||
## 2. Redémarrer les conteneurs arrêtés
|
||
|
||
```bash
|
||
# Si tu utilises docker compose
|
||
cd ~/ton-projet-openwebui
|
||
docker compose up -d
|
||
|
||
# Ou forcer le redémarrage de tout
|
||
docker compose restart
|
||
```
|
||
|
||
|
||
## 3. Voir les logs du conteneur en erreur
|
||
|
||
```bash
|
||
# Open WebUI
|
||
docker logs --tail 50 open-webui
|
||
|
||
# Ollama (ou le backend LLM)
|
||
docker logs --tail 50 ollama
|
||
```
|
||
|
||
|
||
## 4. Vérifier que les conteneurs ont bien `restart: unless-stopped`
|
||
|
||
```bash
|
||
docker inspect open-webui | grep RestartPolicy
|
||
docker inspect ollama | grep RestartPolicy
|
||
```
|
||
|
||
Si la policy est `no`, les conteneurs ne redémarrent pas automatiquement après un reboot. Corrige dans ton `docker-compose.yml` :
|
||
|
||
```yaml
|
||
services:
|
||
ollama:
|
||
restart: unless-stopped
|
||
open-webui:
|
||
restart: unless-stopped
|
||
```
|
||
|
||
|
||
***
|
||
|
||
**Colle le résultat de `docker ps -a`** et je t'indique exactement quel conteneur relancer.
|
||
<span style="display:none">[^29_1]</span>
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^29_1]: image.jpg
|
||
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$ htop
|
||
|
||
effi@effi-server:~\$ docker ps -a
|
||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||
0e449d33d747 ghcr.io/open-webui/open-webui:main "bash start.sh" 5 hours ago Up 3 minutes (healthy) 0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp open-webui
|
||
95fde8885273 fedirz/faster-whisper-server:latest-cpu "uv run uvicorn --fa…" 6 hours ago Up 3 minutes 0.0.0.0:8200->8000/tcp, [::]:8200->8000/tcp whisper
|
||
68865e9ef0fb ghcr.io/matatonic/openedai-speech "/bin/sh -c 'bash st…" 6 hours ago Up 3 minutes 0.0.0.0:8100->8000/tcp, [::]:8100->8000/tcp openedai-speech
|
||
90b176cf78e9 ghcr.io/open-webui/mcpo:main "sh /mcpo-patch.sh" 8 hours ago Up 3 minutes 0.0.0.0:8000->8000/tcp, [::]:8000->8000/tcp mcpo
|
||
ae9d09e8e441 ghcr.io/open-webui/pipelines:main "bash start.sh" 2 days ago Up 3 minutes 0.0.0.0:9099->9099/tcp, [::]:9099->9099/tcp pipelines
|
||
330376345ad2 couchdb:3.3 "tini -- /docker-ent…" 2 days ago Up 3 minutes 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp, [::]:5984->5984/tcp couchdb
|
||
b6a9ea6eec2b qdrant/qdrant:latest "./entrypoint.sh" 2 days ago Up 3 minutes 0.0.0.0:6333-6334->6333-6334/tcp, [::]:6333-6334->6333-6334/tcp qdrant
|
||
c2ae7a572b0c docker.n8n.io/n8nio/n8n:latest "tini -- /docker-ent…" 2 days ago Up 3 minutes 0.0.0.0:5678->5678/tcp, [::]:5678->5678/tcp n8n
|
||
8a7b2eb13e12 effi-wol-proxy "python app.py" 2 days ago Up 3 minutes wol-proxy
|
||
87661e0e585b hello-world "/hello" 2 days ago Exited (0) 2 days ago naughty_mcnulty
|
||
effi@effi-server:~\$ \# Open WebUI
|
||
docker logs --tail 50 open-webui
|
||
|
||
# Ollama (ou le backend LLM)
|
||
|
||
docker logs --tail 50 ollama
|
||
2026-02-21 21:36:30.589 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/a83a7d5d-f320-45ff-9c16-f597a238105d HTTP/1.1" 200
|
||
2026-02-21 21:36:41.016 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:36:41.017 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:36:41.027 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /ollama/api/version HTTP/1.1" 500
|
||
2026-02-21 21:36:41.030 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/models HTTP/1.1" 200
|
||
2026-02-21 21:36:52.016 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:36:52.020 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /ollama/api/version HTTP/1.1" 500
|
||
2026-02-21 21:36:53.976 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 21:37:01.205 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/immutable/chunks/DxrC7fln.js HTTP/1.1" 304
|
||
2026-02-21 21:37:01.205 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/immutable/nodes/8.DSQK34AA.js HTTP/1.1" 304
|
||
2026-02-21 21:37:01.205 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/immutable/nodes/24.b41V1Uwu.js HTTP/1.1" 304
|
||
2026-02-21 21:37:01.209 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/immutable/nodes/5.BXafm3JG.js HTTP/1.1" 304
|
||
2026-02-21 21:37:01.209 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/immutable/chunks/BtUDCm8d.js HTTP/1.1" 304
|
||
2026-02-21 21:37:03.455 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /c/63dc352c-72a8-466d-925f-76fa60a9a3cb HTTP/1.1" 304
|
||
2026-02-21 21:37:03.536 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /manifest.json HTTP/1.1" 200
|
||
2026-02-21 21:37:03.573 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/config HTTP/1.1" 200
|
||
2026-02-21 21:37:03.616 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/auths/ HTTP/1.1" 200
|
||
2026-02-21 21:37:03.658 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/version HTTP/1.1" 200
|
||
2026-02-21 21:37:03.660 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/config HTTP/1.1" 200
|
||
2026-02-21 21:37:03.700 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/users/user/settings HTTP/1.1" 200
|
||
2026-02-21 21:37:03.726 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/configs/banners HTTP/1.1" 200
|
||
2026-02-21 21:37:03.727 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/users/c09565eb-ce13-4606-a2a5-2905e3ddb8c9/profile/image HTTP/1.1" 200
|
||
2026-02-21 21:37:03.747 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/folders/ HTTP/1.1" 200
|
||
2026-02-21 21:37:03.753 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/all/tags HTTP/1.1" 200
|
||
2026-02-21 21:37:03.760 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/users/user/settings HTTP/1.1" 200
|
||
2026-02-21 21:37:03.777 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/tools/ HTTP/1.1" 200
|
||
2026-02-21 21:37:03.792 | INFO | open_webui.routers.openai:get_all_models:490 - get_all_models()
|
||
2026-02-21 21:37:03.792 | INFO | open_webui.routers.ollama:get_all_models:322 - get_all_models()
|
||
2026-02-21 21:37:03.798 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/pinned HTTP/1.1" 200
|
||
2026-02-21 21:37:03.815 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/?page=1 HTTP/1.1" 200
|
||
2026-02-21 21:37:03.839 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "POST /api/v1/tasks/active/chats HTTP/1.1" 200
|
||
2026-02-21 21:37:03.949 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/?page=2 HTTP/1.1" 200
|
||
2026-02-21 21:37:05.079 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/cf5e869f-8a5b-4521-9b39-bc6ba3a7d88c HTTP/1.1" 200
|
||
2026-02-21 21:37:05.090 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/88493c4a-d6c7-4962-af7d-993484ccfcbb HTTP/1.1" 200
|
||
2026-02-21 21:37:14.015 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:37:25.016 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:37:25.025 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/models HTTP/1.1" 200
|
||
2026-02-21 21:37:25.072 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/63dc352c-72a8-466d-925f-76fa60a9a3cb HTTP/1.1" 200
|
||
2026-02-21 21:37:25.106 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/chats/63dc352c-72a8-466d-925f-76fa60a9a3cb/tags HTTP/1.1" 200
|
||
2026-02-21 21:37:25.137 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/tasks/chat/63dc352c-72a8-466d-925f-76fa60a9a3cb HTTP/1.1" 200
|
||
2026-02-21 21:37:25.212 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/v1/tools/ HTTP/1.1" 200
|
||
2026-02-21 21:37:48.164 | INFO | open_webui.routers.openai:get_all_models:490 - get_all_models()
|
||
2026-02-21 21:37:48.164 | INFO | open_webui.routers.ollama:get_all_models:322 - get_all_models()
|
||
2026-02-21 21:37:59.016 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:37:59.017 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:37:59.021 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /ollama/api/version HTTP/1.1" 500
|
||
2026-02-21 21:38:03.522 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
2026-02-21 21:38:10.016 | ERROR | open_webui.routers.ollama:send_get_request:104 - Connection error:
|
||
2026-02-21 21:38:10.025 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /api/models HTTP/1.1" 200
|
||
2026-02-21 21:39:03.523 | INFO | uvicorn.protocols.http.httptools_impl:send:483 - 192.168.1.254:0 - "GET /_app/version.json HTTP/1.1" 200
|
||
Error response from daemon: No such container: ollama
|
||
effi@effi-server:~\$
|
||
|
||
Le problème est clair : **le conteneur `ollama` n'existe pas** (`No such container: ollama`). Open WebUI essaie de s'y connecter en permanence et échoue.
|
||
|
||
## Vérifier où tourne Ollama
|
||
|
||
Ollama n'est peut-être pas dans ce docker-compose, mais installé directement sur le serveur :
|
||
|
||
```bash
|
||
# Service systemd ?
|
||
systemctl status ollama
|
||
|
||
# Processus actif ?
|
||
ps aux | grep ollama
|
||
|
||
# Port 11434 ouvert ?
|
||
ss -tlnp | grep 11434
|
||
```
|
||
|
||
|
||
## Si Ollama est en systemd (installé natif)
|
||
|
||
```bash
|
||
# Le démarrer
|
||
sudo systemctl start ollama
|
||
sudo systemctl enable ollama # pour les prochains reboots
|
||
|
||
# Vérifier
|
||
curl http://localhost:11434/api/version
|
||
```
|
||
|
||
|
||
## Si Ollama devrait être un conteneur Docker
|
||
|
||
Retrouve son docker-compose :
|
||
|
||
```bash
|
||
find ~ -name "docker-compose*.yml" | xargs grep -l ollama 2>/dev/null
|
||
```
|
||
|
||
Puis le relancer :
|
||
|
||
```bash
|
||
cd /dossier/trouvé
|
||
docker compose up -d ollama
|
||
```
|
||
|
||
|
||
## Vérifier l'URL configurée dans Open WebUI
|
||
|
||
Dans tous les cas, vérifie que l'URL Ollama configurée dans Open WebUI correspond à la réalité :
|
||
|
||
- Si Ollama est en **systemd natif** → l'URL doit être `http://host.docker.internal:11434` ou `http://172.17.0.1:11434`
|
||
- Si Ollama est en **conteneur Docker** → l'URL doit être `http://ollama:11434` (même réseau Docker)
|
||
|
||
***
|
||
|
||
Colle le résultat de `systemctl status ollama` et `ss -tlnp | grep 11434`.
|
||
|
||
---
|
||
|
||
# openweb ui a un probleme, il est tres lent repond pas ce n'est pas normal
|
||
|
||
Vérifions les ressources consommées en temps réel :
|
||
|
||
```bash
|
||
# Charge globale CPU/RAM
|
||
free -h && uptime
|
||
|
||
# Top des processus les plus gourmands
|
||
ps aux --sort=-%cpu | head -20
|
||
|
||
# Stats temps réel de tous les conteneurs
|
||
docker stats --no-stream
|
||
```
|
||
|
||
Et spécifiquement open-webui :
|
||
|
||
```bash
|
||
# Logs en temps réel pour voir ce qui bloque
|
||
docker logs -f --tail 100 open-webui
|
||
|
||
# Inspecter si le conteneur est vraiment healthy
|
||
docker inspect open-webui | grep -A 10 Health
|
||
```
|
||
|
||
|
||
## Causes fréquentes après un reboot
|
||
|
||
- **RAM saturée** — trop de conteneurs qui redémarrent en même temps, Ollama qui charge un gros modèle en mémoire
|
||
- **Disque I/O saturé** — les conteneurs écrivent tous leurs données au démarrage
|
||
- **Open WebUI qui tourne des migrations DB** au premier démarrage après update
|
||
|
||
```bash
|
||
# Vérifier I/O disque
|
||
iostat -x 1 3
|
||
|
||
# Espace disque
|
||
df -h
|
||
```
|
||
|
||
Colle le résultat de `docker stats --no-stream` — ça donnera immédiatement quel conteneur bouffe les ressources.
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$ \# Charge globale CPU/RAM
|
||
|
||
free -h \&\& uptime
|
||
|
||
# Top des processus les plus gourmands
|
||
|
||
ps aux --sort=-%cpu | head -20
|
||
|
||
# Stats temps réel de tous les conteneurs
|
||
|
||
docker stats --no-stream
|
||
total used free shared buff/cache available
|
||
Mem: 7.6Gi 2.4Gi 3.1Gi 12Mi 2.5Gi 5.2Gi
|
||
Swap: 4.0Gi 0B 4.0Gi
|
||
21:46:52 up 11 min, 1 user, load average: 0.22, 0.22, 0.14
|
||
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
||
effi 3051 200 0.0 12336 5380 pts/0 R+ 21:46 0:00 ps aux --sort=-%cpu
|
||
root 1456 4.5 10.0 2857648 801764 ? Ssl 21:35 0:32 /usr/local/bin/python3 -m uvicorn open_webui.main:app --host 0.0.0.0 --port 8080 --forwarded-allow-ips * --workers 1
|
||
root 2012 3.6 11.3 4802776 905912 ? SLl 21:35 0:25 python speech.py
|
||
effi 1684 2.7 2.6 22355548 208828 ? Sl 21:35 0:19 node /usr/local/bin/n8n
|
||
root 1950 2.1 2.2 598904 179932 ? Sl 21:35 0:15 /root/faster-whisper-server/.venv/bin/python /root/faster-whisper-server/.venv/bin/uvicorn --factory faster_whisper_server.main:create_app
|
||
5984 1918 1.6 0.8 2947568 64928 ? Sl 21:35 0:11 /opt/couchdb/bin/../erts-12.3.2.15/bin/beam.smp -SDio 16 -zdbbl 32768 -sbwt none -sbwtdcpu none -sbwtdio none -Bd -- -root /opt/couchdb/bin/.. -progname couchdb -- -home /opt/couchdb -- -boot /opt/couchdb/bin/../releases/3.3.3/couchdb -kernel inet_dist_listen_min 9100 -kernel inet_dist_listen_max 9100 -kernel error_logger silent -sasl sasl_error_logger false -kernel prevent_overlapping_partitions false -noshell -noinput -- -config /opt/couchdb/bin/../releases/3.3.3/sys.config --
|
||
effi 2068 0.7 1.3 21695696 104172 ? Sl 21:35 0:05 node --disallow-code-generation-from-strings --disable-proto=delete /usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+task-runner@file+packages+@n8n+task-runner_@opentelemetry+api@1.9.0_@opentelemetry_c2ea36637674b99f45b42fa0a37672ba/node_modules/@n8n/task-runner/dist/start.js
|
||
root 1463 0.7 0.9 87440 73360 ? Ss 21:35 0:05 /app/.venv/bin/python3 /app/.venv/bin/mcpo --config /app/config/config.json
|
||
root 1917 0.5 0.8 254576 67796 ? Sl 21:35 0:03 /usr/local/bin/python /usr/local/bin/uvicorn main:app --host 0.0.0.0 --port 9099 --forwarded-allow-ips * --loop auto
|
||
root 878 0.4 1.1 3389440 92432 ? Ssl 21:35 0:02 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
|
||
root 1838 0.3 0.0 0 0 ? Z 21:35 0:02 [mcpo] <defunct>
|
||
root 740 0.2 0.6 2388572 54624 ? Ssl 21:34 0:01 /usr/bin/containerd
|
||
root 1500 0.2 0.4 536376 36360 ? Ssl 21:35 0:01 python app.py
|
||
root 2043 0.2 0.0 0 0 ? Z 21:35 0:01 [python] <defunct>
|
||
root 1757 0.2 1.7 648280 140876 ? Sl 21:35 0:01 ./qdrant
|
||
root 2107 0.2 0.7 212724 57184 ? Sl 21:35 0:01 /root/.cache/uv/archive-v0/vZnPVCcyBNrvSAUg9sMQn/bin/python /root/.cache/uv/archive-v0/vZnPVCcyBNrvSAUg9sMQn/bin/mcp-obsidian
|
||
root 1 0.1 0.1 22256 13512 ? Ss 21:34 0:01 /sbin/init
|
||
root 324 0.0 0.2 66856 17348 ? S<s 21:34 0:00 /usr/lib/systemd/systemd-journald
|
||
root 3032 0.0 0.0 4948 3032 ? S 21:46 0:00 jq -ne input.status == true
|
||
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
|
||
0e449d33d747 open-webui 0.01% 972.9MiB / 7.595GiB 12.51% 411kB / 255kB 1.12GB / 1.9MB 20
|
||
95fde8885273 whisper 1.19% 248.8MiB / 7.595GiB 3.20% 7.06kB / 1.69kB 331MB / 0B 9
|
||
68865e9ef0fb openedai-speech 0.37% 1.06GiB / 7.595GiB 13.95% 228kB / 5.69kB 1.35GB / 434kB 9
|
||
90b176cf78e9 mcpo 0.39% 177.1MiB / 7.595GiB 2.28% 20.1kB / 85.5kB 234MB / 35.7MB 8
|
||
ae9d09e8e441 pipelines 0.29% 84.11MiB / 7.595GiB 1.08% 7.43kB / 4.75kB 121MB / 20.5kB 7
|
||
330376345ad2 couchdb 0.33% 64.22MiB / 7.595GiB 0.83% 1.86kB / 126B 59.1MB / 0B 34
|
||
b6a9ea6eec2b qdrant 0.28% 137MiB / 7.595GiB 1.76% 8.89kB / 4.61kB 102MB / 90.1kB 24
|
||
c2ae7a572b0c n8n 2.79% 295.4MiB / 7.595GiB 3.80% 26.7kB / 27.2kB 381MB / 111MB 20
|
||
8a7b2eb13e12 wol-proxy 0.02% 42.49MiB / 7.595GiB 0.55% 0B / 0B 53.7MB / 0B 2
|
||
effi@effi-server:~\$ \# Vérifier I/O disque
|
||
iostat -x 1 3
|
||
|
||
# Espace disque
|
||
|
||
df -h
|
||
Linux 6.8.0-100-generic (effi-server) 02/21/2026 _x86_64_ (4 CPU)
|
||
|
||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||
3.83 0.00 1.42 0.26 0.00 94.49
|
||
|
||
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
|
||
dm-0 111.08 2885.50 0.00 0.00 0.41 25.98 9.91 145.75 0.00 0.00 0.82 14.70 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.05 2.14
|
||
loop0 0.01 0.02 0.00 0.00 0.00 1.27 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||
nvme0n1 86.12 2904.90 27.06 23.91 0.29 33.73 5.47 145.92 5.23 48.90 1.21 26.70 0.00 0.00 0.00 0.00 0.00 0.00 0.70 1.04 0.03 1.20
|
||
|
||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||
3.53 0.00 0.76 0.00 0.00 95.72
|
||
|
||
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
|
||
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 7.00 28.00 0.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||
loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||
nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 7.00 28.00 0.00 0.00 0.57 4.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||
|
||
avg-cpu: %user %nice %system %iowait %steal %idle
|
||
0.51 0.00 0.51 0.00 0.00 98.99
|
||
|
||
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
|
||
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 2.00 8.00 0.00 0.00 1.00 4.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.10
|
||
loop0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||
nvme0n1 0.00 0.00 0.00 0.00 0.00 0.00 1.00 8.00 1.00 50.00 2.00 8.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.10
|
||
|
||
Filesystem Size Used Avail Use% Mounted on
|
||
tmpfs 778M 2.0M 776M 1% /run
|
||
efivarfs 128K 60K 64K 49% /sys/firmware/efi/efivars
|
||
/dev/mapper/ubuntu--vg-ubuntu--lv 98G 38G 56G 41% /
|
||
tmpfs 3.8G 0 3.8G 0% /dev/shm
|
||
tmpfs 5.0M 0 5.0M 0% /run/lock
|
||
/dev/nvme0n1p2 2.0G 103M 1.7G 6% /boot
|
||
/dev/nvme0n1p1 1.1G 6.2M 1.1G 1% /boot/efi
|
||
tmpfs 778M 12K 778M 1% /run/user/1000
|
||
effi@effi-server:~\$
|
||
|
||
Les ressources sont saines (CPU idle à 95%, RAM OK, disque OK). Le vrai problème est double :
|
||
|
||
**1. Ollama est absent** → Open WebUI tente de le joindre toutes les 11 secondes, ça génère des timeouts qui ralentissent l'UI.
|
||
|
||
**2. Deux processus zombies** (`mcpo` et `python`) qui indiquent des crashs silencieux.
|
||
|
||
## Corriger Ollama en priorité
|
||
|
||
Ollama tourne en **systemd natif** sur ce serveur (pas en Docker) :
|
||
|
||
```bash
|
||
systemctl status ollama
|
||
sudo systemctl start ollama
|
||
curl http://localhost:11434/api/version
|
||
```
|
||
|
||
Si pas installé du tout :
|
||
|
||
```bash
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
sudo systemctl enable --now ollama
|
||
```
|
||
|
||
|
||
## Vérifier l'URL Ollama dans Open WebUI
|
||
|
||
Une fois Ollama démarré, vérifie que Open WebUI pointe vers la bonne adresse. Dans l'interface → **Admin Panel → Settings → Connections**, l'URL Ollama doit être :
|
||
|
||
```
|
||
http://host.docker.internal:11434
|
||
```
|
||
|
||
Ou depuis le serveur, vérifie la variable d'env du conteneur :
|
||
|
||
```bash
|
||
docker inspect open-webui | grep -i ollama
|
||
```
|
||
|
||
|
||
## Nettoyer les zombies mcpo/python
|
||
|
||
```bash
|
||
# Redémarrer mcpo qui a un zombie
|
||
docker restart mcpo
|
||
|
||
# Vérifier
|
||
docker ps | grep mcpo
|
||
ps aux | grep defunct
|
||
```
|
||
|
||
|
||
***
|
||
|
||
Commence par `systemctl status ollama` — c'est la cause racine de tout le problème.
|
||
|
||
---
|
||
|
||
# ce n'est pas ollama mais un wol proxy qui tourne sur ce serveur, celui-ci a pour objectif de pinguer le pc ou se trouve ollama et de lancer un wol si besoin
|
||
|
||
Ah voilà ! Le PC avec Ollama est éteint ou inaccessible. Le `wol-proxy` est censé le réveiller mais Open WebUI continue de recevoir des erreurs de connexion en attendant.
|
||
|
||
## Vérifier l'état du PC Ollama
|
||
|
||
```bash
|
||
# Le PC répond-il ?
|
||
ping -c 4 <IP_PC_Ollama>
|
||
|
||
# Le port Ollama est-il accessible ?
|
||
nc -zv <IP_PC_Ollama> 11434
|
||
```
|
||
|
||
|
||
## Vérifier les logs du wol-proxy
|
||
|
||
```bash
|
||
docker logs --tail 50 -f wol-proxy
|
||
```
|
||
|
||
Il devrait montrer s'il a tenté d'envoyer le magic packet et si le PC a répondu.
|
||
|
||
## Forcer manuellement un WOL
|
||
|
||
Si le proxy n'a pas déclenché le réveil :
|
||
|
||
```bash
|
||
# Depuis le serveur effi
|
||
docker exec wol-proxy python -c "import app; app.wake()"
|
||
|
||
# Ou avec wakeonlan directement
|
||
sudo apt install wakeonlan
|
||
wakeonlan <MAC_adresse_PC_Ollama>
|
||
```
|
||
|
||
|
||
## Si le PC est allumé mais Ollama ne répond pas
|
||
|
||
```bash
|
||
# Tester directement l'API Ollama
|
||
curl http://<IP_PC_Ollama>:11434/api/version
|
||
|
||
# Vérifier si le service Ollama a redémarré automatiquement sur le PC
|
||
ssh user@<IP_PC_Ollama> "systemctl status ollama"
|
||
```
|
||
|
||
|
||
***
|
||
|
||
**Quelle IP a le PC avec Ollama ?** Et les logs du `wol-proxy` montrent quoi ?
|
||
|
||
---
|
||
|
||
# c'est bon j'ai trouvé, l'interface reseau filaire de ubuntu avais planté j'ai fait off on et s'est revenu. C'est souvant sur ubuntu ?
|
||
|
||
Oui, ça arrive sur Ubuntu, surtout dans certains contextes. Les causes les plus fréquentes :
|
||
|
||
## Causes connues
|
||
|
||
- **Driver réseau qui se plante** — particulièrement avec certaines cartes Intel (i225/i226) qui ont des bugs firmware bien documentés sous Linux
|
||
- **NetworkManager qui déraille** après un reboot si des services démarrent dans le mauvais ordre
|
||
- **Carte réseau en `power saving` agressif** — le kernel met la carte en veille et elle ne se réveille pas correctement
|
||
- **Mise à jour de kernel** qui change le comportement du driver sans redémarrage propre
|
||
|
||
|
||
## Vérifier si c'est récurrent
|
||
|
||
```bash
|
||
# Voir les erreurs réseau dans les logs système
|
||
journalctl -b -1 | grep -i "eth\|ens\|enp\|network\|link"
|
||
|
||
# Identifier ta carte réseau
|
||
lspci | grep -i ethernet
|
||
```
|
||
|
||
|
||
## Fix préventif — désactiver le power saving
|
||
|
||
```bash
|
||
# Identifier l'interface
|
||
ip link show
|
||
|
||
# Désactiver le power management (remplace enp3s0 par ton interface)
|
||
sudo ethtool -s enp3s0 wol g
|
||
echo 'ACTION=="add", SUBSYSTEM=="net", NAME=="enp3s0", RUN+="/usr/sbin/ethtool -s enp3s0 wol g"' \
|
||
| sudo tee /etc/udev/rules.d/99-disable-net-powersave.rules
|
||
```
|
||
|
||
|
||
## Fix NetworkManager au boot
|
||
|
||
```bash
|
||
sudo systemctl restart NetworkManager
|
||
# S'assurer qu'il démarre après les dépendances réseau
|
||
sudo systemctl enable NetworkManager-wait-online.service
|
||
```
|
||
|
||
Quelle est ta carte réseau (`lspci | grep -i ethernet`) ? Si c'est une **Intel i225/i226**, il y a un fix kernel spécifique connu.
|
||
|
||
---
|
||
|
||
# ca arrive souvent ?
|
||
|
||
s/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:17:11 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/191711.196852:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (04188B92404DAAE85867E49F8A16C6AF) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:19:37 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/191937.416298:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:19:37 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/191937.416312:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (9E3E98679BE446CA24EEF9489FF30765) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:20:08 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192008.076312:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:20:08 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192008.076327:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (48DDE1311F8337B23E8734D061A9B52E) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:21:47 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192147.497511:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:21:47 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192147.497523:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (AE474897B0B31097DDE2F35E47F1DB67) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:23:01 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192301.462650:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:23:01 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192301.462662:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (2A5C1470A844C4030024E37347990544) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:25:14 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192514.804885:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:25:14 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/192514.804896:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (C30E435F582773C0428A92B6F0F71498) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:30:05 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193005.010784:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:30:05 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193005.010795:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (28F5E7DD906FAE47DB9D35EC79A5F138) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:31:17 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193117.054763:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:31:17 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193117.054779:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (448E3CF3870F56D436A7611F42C9A287) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:31:57 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193157.559701:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:31:57 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193157.559715:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (5D2EA3F1077E40D3914FECED42A18849) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:33:35 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193335.526589:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:33:35 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193335.526601:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (6EEF8EE784D95BD6F2DB10FDB2129A9E) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:34:15 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193415.826222:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:34:15 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193415.826238:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (82B2DBAFB5108032EF0936D4C13D5E38) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:35:56 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193556.246806:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:35:56 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193556.246818:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (7520A764A864F58DB58B10852F915706) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:36:27 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193627.781403:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:36:27 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193627.781419:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (A4E2D28C17C7F0C915226D5774D15E52) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:36:58 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193658.183636:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:36:58 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193658.183648:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (FF29E2BDE203E228149EA523DDD33307) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:38:57 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193857.379396:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:38:57 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193857.379408:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (363870A292CDAD221740C19586226856) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:39:30 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193930.516099:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:39:30 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/193930.516112:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (691F76D8B89B69576B7BE1C2E76BA78C) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:42:21 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194221.881442:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:42:21 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194221.881454:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (82806B4A4937FA7B5FBA16C17E661CA2) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:47:17 folzo-Corp systemd[1]: Starting update-notifier-motd.service - Check to see whether there is a new version of Ubuntu available...
|
||
févr. 19 19:47:17 folzo-Corp systemd[1]: Finished update-notifier-motd.service - Check to see whether there is a new version of Ubuntu available.
|
||
févr. 19 19:47:21 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194721.882753:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:47:21 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194721.882769:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (E0B233411021C83672A77E000A95D4C5) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194903.449104:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194903.449117:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (C5FA9A66450D5A0D3DCA383B82FED8F9) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:49:33 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194933.793632:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:49:33 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/194933.793647:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (4B89E2D1521A6DAA82677F0597C3AA09) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 19:50:54 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/195054.113204:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 19:50:54 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/195054.113216:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (577EB19E7D1BC2898D3E41843F5693B5) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 20:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/204903.453338:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 20:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/204903.453352:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (43D85A5A7A9ED714E6B2324A4268E3D4) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 21:31:30 folzo-Corp NetworkManager[1702]: <info> [1771533090.9087] dhcp4 (wlp5s0): state changed new lease, address=192.168.1.12
|
||
févr. 19 21:31:30 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:31:30 folzo-Corp systemd[1]: Starting NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service...
|
||
févr. 19 21:31:30 folzo-Corp systemd[1]: Started NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service.
|
||
févr. 19 21:31:40 folzo-Corp systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
|
||
févr. 19 21:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/214903.449550:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 21:49:03 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/214903.449561:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (0798AA464C584278E24FF480D31072E6) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 21:57:40 folzo-Corp NetworkManager[1702]: <info> [1771534660.6455] dhcp4 (enp6s0): state changed new lease, address=192.168.1.11
|
||
févr. 19 21:57:40 folzo-Corp NetworkManager[1702]: <info> [1771534660.6460] device (enp6s0): conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23
|
||
févr. 19 21:57:40 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:57:40 folzo-Corp systemd[1]: Starting NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service...
|
||
févr. 19 21:57:40 folzo-Corp systemd[1]: Started NetworkManager-dispatcher.service - Network Manager Script Dispatcher Service.
|
||
févr. 19 21:57:50 folzo-Corp systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
|
||
févr. 19 21:58:26 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/215826.649279:ERROR:chromium/services/network/restricted_cookie_manager.cc:1148] site_for_cookies from renderer='SiteForCookies: {site=null; schemefully_same=false}' from browser='SiteForCookies: {site=https://perplexity.ai; schemefully_same=true}';
|
||
févr. 19 21:58:26 folzo-Corp vivaldi_vivaldi-stable.desktop[8143]: [8143:8156:0219/215826.649291:ERROR:chromium/services/network/restricted_cookie_manager.cc:1157] top_frame_origin from renderer='null [internally: (E1C5D4E93809A6F2E3C3F761B0CF68A4) anonymous]' from browser='https://www.perplexity.ai';
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: [7944:7944:0219/215827.217266:ERROR:CONSOLE:0] "Unchecked runtime.lastError: The browser is shutting down.", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: at _handleInProgressSearch (chrome-extension://mpognobbkildjkofajifpdfhcoklimli/bundle.js:1:132491)", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: [7944:7944:0219/215827.217310:ERROR:CONSOLE:0] "Unchecked runtime.lastError: The browser is shutting down.", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: [7944:7944:0219/215827.217330:ERROR:CONSOLE:0] "Unchecked runtime.lastError: The browser is shutting down.", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: at chrome-extension://mpognobbkildjkofajifpdfhcoklimli/bundle.js:1:134020", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:27 folzo-Corp vivaldi_vivaldi-stable.desktop[7944]: [7944:7944:0219/215827.217350:ERROR:CONSOLE:0] "Unchecked runtime.lastError: The browser is shutting down.", source: chrome-extension://mpognobbkildjkofajifpdfhcoklimli/main.html (0)
|
||
févr. 19 21:58:39 folzo-Corp systemd[5000]: app-gnome-gnome\\x2dnetwork\\x2dpanel-274879.scope: Consumed 2.322s CPU time, 87.2M memory peak.
|
||
févr. 19 21:58:51 folzo-Corp com.heroicgameslauncher.hgl.desktop[1810576]: which: no wine in (/app/bin:/app/bin:/app/utils/bin:/usr/bin:/usr/lib/extensions/vulkan/MangoHud/bin:/usr/lib/extensions/vulkan/gamescope/bin:/usr/lib/extensions/vulkan/OBSVkCapture/bin:/app/bin/heroic/resources/app.asar.unpacked/build/bin/linux)
|
||
févr. 19 21:58:54 folzo-Corp com.heroicgameslauncher.hgl.desktop[1810576]: which: no wine in (/app/bin:/app/bin:/app/utils/bin:/usr/bin:/usr/lib/extensions/vulkan/MangoHud/bin:/usr/lib/extensions/vulkan/gamescope/bin:/usr/lib/extensions/vulkan/OBSVkCapture/bin:/app/bin/heroic/resources/app.asar.unpacked/build/bin/linux)
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopped target nss-lookup.target - Host and Network Name Lookups.
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopped update-notifier-motd.timer - Check to see whether there is a new version of Ubuntu available.
|
||
févr. 19 21:59:05 folzo-Corp systemd[5000]: Stopped target org.gnome.SettingsDaemon.ScreensaverProxy.target - GNOME FreeDesktop screensaver target.
|
||
févr. 19 21:59:05 folzo-Corp NetworkManager[1702]: <info> [1771534745.6229] modem-manager: ModemManager no longer available
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopping networkd-dispatcher.service - Dispatcher daemon for systemd-networkd...
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: networkd-dispatcher.service: Deactivated successfully.
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopped networkd-dispatcher.service - Dispatcher daemon for systemd-networkd.
|
||
févr. 19 21:59:05 folzo-Corp dbus-daemon[1610]: [system] Rejected send message, 1 matched rules; type="method_call", sender=":1.3" (uid=0 pid=1608 comm="/usr/libexec/bluetooth/bluetoothd" label="unconfined") interface="org.bluez.GattProfile1" member="Release" error name="(unset)" requested_reply="0" destination=":1.86" (uid=1000 pid=5046 comm="/usr/bin/wireplumber" label="unconfined")
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopped target network-online.target - Network is Online.
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: NetworkManager-wait-online.service: Deactivated successfully.
|
||
févr. 19 21:59:05 folzo-Corp systemd[1]: Stopped NetworkManager-wait-online.service - Network Manager Wait Online.
|
||
févr. 19 21:59:05 folzo-Corp avahi-daemon[1607]: Leaving mDNS multicast group on interface enp6s0.IPv4 with address 192.168.1.11.
|
||
févr. 19 21:59:05 folzo-Corp dbus-daemon[5026]: [session uid=1000 pid=5026 pidfd=5] Activating via systemd: service name='org.gtk.vfs.Daemon' unit='gvfs-daemon.service' requested by ':1.269' (uid=1000 pid=1812087 comm="gjs /usr/share/gnome-shell/extensions/ding@rasters" label="desktop-icons-ng (unconfined)")
|
||
févr. 19 21:59:06 folzo-Corp systemd[5000]: Stopping ssh-agent.service - OpenSSH Agent...
|
||
févr. 19 21:59:06 folzo-Corp systemd[5000]: Stopped ssh-agent.service - OpenSSH Agent.
|
||
févr. 19 21:59:06 folzo-Corp systemd[5000]: Closed dirmngr.socket - GnuPG network certificate management daemon.
|
||
févr. 19 21:59:06 folzo-Corp systemd[5000]: Stopping ssh-agent.socket - OpenSSH Agent socket...
|
||
févr. 19 21:59:06 folzo-Corp systemd[5000]: Closed ssh-agent.socket - OpenSSH Agent socket.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopped target network.target - Network.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopping NetworkManager.service - Network Manager...
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7567] caught SIGTERM, shutting down normally.
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7571] manager: NetworkManager state is now CONNECTED_GLOBAL
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Requested transaction contradicts existing jobs: Transaction for NetworkManager-dispatcher.service/start is destructive (integritysetup.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.nm-dispatcher.service': Transaction for NetworkManager-dispatcher.service/start is destructive (integritysetup.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7691] dhcp4 (enp6s0): canceled DHCP transaction
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7692] dhcp4 (enp6s0): activation: beginning transaction (timeout in 45 seconds)
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7692] dhcp4 (enp6s0): state changed no lease
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7827] device (wlp5s0): state change: activated -> deactivating (reason 'unmanaged', managed-type: 'full')
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Requested transaction contradicts existing jobs: Transaction for NetworkManager-dispatcher.service/start is destructive (cryptsetup.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.nm-dispatcher.service': Transaction for NetworkManager-dispatcher.service/start is destructive (cryptsetup.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <warn> [1771534748.7841] dispatcher: (43) failed (after 0.001 sec): Transaction for NetworkManager-dispatcher.service/start is destructive (cryptsetup.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7842] device (wlp5s0): state change: deactivating -> unmanaged (reason 'unmanaged-quitting', managed-type: 'full')
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7842] dhcp4 (wlp5s0): canceled DHCP transaction
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7843] dhcp4 (wlp5s0): activation: beginning transaction (timeout in 45 seconds)
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.7843] dhcp4 (wlp5s0): state changed no lease
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Requested transaction contradicts existing jobs: Transaction for NetworkManager-dispatcher.service/start is destructive (swap.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.nm-dispatcher.service': Transaction for NetworkManager-dispatcher.service/start is destructive (swap.target has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.8447] manager: NetworkManager state is now CONNECTED_LOCAL
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.8448] device (p2p-dev-wlp5s0): state change: disconnected -> unmanaged (reason 'unmanaged-link-not-init', managed-type: 'removed')
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.10' (uid=0 pid=1702 comm="/usr/sbin/NetworkManager --no-daemon" label="unconfined")
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Requested transaction contradicts existing jobs: Transaction for NetworkManager-dispatcher.service/start is destructive (systemd-tmpfiles-setup-dev-early.service has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp dbus-daemon[1610]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.nm-dispatcher.service': Transaction for NetworkManager-dispatcher.service/start is destructive (systemd-tmpfiles-setup-dev-early.service has 'stop' job queued, but 'start' is included in transaction).
|
||
févr. 19 21:59:08 folzo-Corp NetworkManager[1702]: <info> [1771534748.8749] exiting (success)
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: NetworkManager.service: Deactivated successfully.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopped NetworkManager.service - Network Manager.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: NetworkManager.service: Consumed 1min 1.494s CPU time, 31.4M memory peak.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopped target network-pre.target - Preparation for Network.
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopping systemd-resolved.service - Network Name Resolution...
|
||
févr. 19 21:59:08 folzo-Corp systemd[1]: Stopped systemd-resolved.service - Network Name Resolution.
|
||
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 26)
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Ces logs viennent de **ta machine locale** (`folzo-Corp`), pas du serveur effi. Deux choses distinctes à noter :
|
||
|
||
## Les erreurs `restricted_cookie_manager` → sans gravité
|
||
|
||
Ce sont des logs Chromium/Vivaldi totalement bénins — un iframe ou web worker sur perplexity.ai avec un contexte cookie `null`. Ça n'affecte rien, c'est du bruit de debug Chromium. **À ignorer.**
|
||
|
||
## Le vrai problème repéré : conflit IP
|
||
|
||
```
|
||
conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23
|
||
```
|
||
|
||
Ta machine `folzo-Corp` et une autre machine sur le réseau se battaient pour la même IP `192.168.1.11`. C'est probablement la cause du plantage réseau — le DHCP a attribué la même adresse deux fois.
|
||
|
||
## Fix : IP statiques ou réservations DHCP
|
||
|
||
Sur ton routeur/box, assigne des IP fixes par MAC address pour éviter les conflits :
|
||
|
||
|
||
| Machine | IP fixe suggérée |
|
||
| :-- | :-- |
|
||
| folzo-Corp (`enp6s0`) | `192.168.1.11` réservée |
|
||
| effi-server | `192.168.1.27` réservée |
|
||
| PC Ollama | IP réservée |
|
||
|
||
## Ta carte réseau : Realtek RTL8111
|
||
|
||
Bonne nouvelle, c'est un driver très stable (`r8169` sous Linux). Pas de bug connu de power saving agressif contrairement aux Intel i225. Le plantage vient donc bien du **conflit DHCP**, pas du driver.
|
||
|
||
```bash
|
||
# Vérifier l'IP actuelle et la MAC pour la réservation
|
||
ip addr show enp6s0 | grep -E "inet |ether"
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# ok autre probleme avec la reconnaissance vocal, ca ne marche pas : j'ai une erreur : "error: 400: [error : 500 : Error transcibing chunk : external : 520 server error: Internal server Error for url : https://192.168.1.11:8200/v1/audio/transcriptions]]
|
||
|
||
L'erreur vient en cascade : Open WebUI → appelle le serveur STT sur `192.168.1.11:8200` → qui répond 500. C'est le conteneur `whisper` (`fedirz/faster-whisper-server`) sur le serveur effi qui plante.
|
||
|
||
## Vérifier les logs du whisper
|
||
|
||
```bash
|
||
ssh ubuntu@192.168.1.27
|
||
docker logs --tail 50 -f whisper
|
||
```
|
||
|
||
|
||
## Causes probables
|
||
|
||
**1. Le modèle n'est pas encore chargé** — au démarrage il télécharge/charge le modèle, ça peut prendre quelques minutes :
|
||
|
||
```bash
|
||
docker logs whisper 2>&1 | grep -i "model\|load\|error\|cuda\|cpu"
|
||
```
|
||
|
||
**2. Problème de mémoire RAM** — `openedai-speech` prend déjà 1.06GB, whisper en prend ~500MB en plus :
|
||
|
||
```bash
|
||
free -h
|
||
```
|
||
|
||
**3. Le modèle configuré n'existe pas** — vérifier quelle variable d'env est définie :
|
||
|
||
```bash
|
||
docker inspect whisper | grep -A 20 '"Env"'
|
||
```
|
||
|
||
|
||
## Tester directement le endpoint
|
||
|
||
```bash
|
||
# Depuis effi-server, tester l'API whisper directement
|
||
curl -X POST http://localhost:8200/v1/audio/transcriptions \
|
||
-H "Authorization: Bearer doesntmatter" \
|
||
-F "file=@/tmp/test.mp3" \
|
||
-F "model=Systran/faster-whisper-large-v3"
|
||
```
|
||
|
||
|
||
***
|
||
|
||
Colle le `docker logs --tail 50 whisper` — l'erreur 500 interne sera visible dedans.
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$ curl -X POST [http://192.168.1.11:8200/v1/audio/transcriptions](http://192.168.1.11:8200/v1/audio/transcriptions) -H "Authorization: Bearer doesntmatter" -F "file=@/tmp/test.mp3" -F "model=Systran/faster-whisper-large-v3"
|
||
|
||
curl: (26) Failed to open/read local data from file/application
|
||
effi@effi-server:~\$
|
||
|
||
folzo@folzo-Corp:~/speaches\$ docker ps
|
||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||
d19885b93bcd speaches:rocm-ct2 ".venv/bin/uvicorn s…" 33 minutes ago Up 33 minutes 0.0.0.0:8200->8000/tcp, [::]:8200->8000/tcp speaches-stt
|
||
folzo@folzo-Corp:~/speaches\$ docker compose down \&\& docker compose up -d
|
||
[+] down 3/3
|
||
✔ Container speaches-init Removed 0.1s
|
||
✔ Container speaches-stt Removed 1.3s
|
||
✔ Network speaches_default Removed 0.1s
|
||
[+] up 3/3
|
||
✔ Network speaches_default Created 0.0s
|
||
✔ Container speaches-stt Created 0.1s
|
||
✔ Container speaches-init Created 0.1s
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Attention, il y a une confusion importante : **le conteneur `whisper` qui reçoit les requêtes tourne sur `folzo-Corp` (toi), pas sur `effi-server` !**
|
||
|
||
- `folzo-Corp` → `speaches:rocm-ct2` sur le port `8200` ← c'est celui-là qui est appelé
|
||
- `effi-server` → `fedirz/faster-whisper-server` sur le port `8200` ← celui-là n'est pas utilisé
|
||
|
||
|
||
## Vérifier les logs de speaches sur folzo-Corp
|
||
|
||
```bash
|
||
docker logs --tail 50 -f speaches-stt
|
||
```
|
||
|
||
|
||
## Tester avec un vrai fichier audio
|
||
|
||
```bash
|
||
# Créer un fichier de test (si tu n'en as pas)
|
||
ffmpeg -f lavfi -i "sine=frequency=440:duration=3" /tmp/test.wav
|
||
|
||
# Tester l'API
|
||
curl -X POST http://localhost:8200/v1/audio/transcriptions \
|
||
-H "Authorization: Bearer doesntmatter" \
|
||
-F "file=@/tmp/test.wav" \
|
||
-F "model=Systran/faster-whisper-large-v3"
|
||
```
|
||
|
||
|
||
## Le problème MIOpen/cuDNN est peut-être encore là
|
||
|
||
Le build avec `-DWITH_CUDNN=ON` a bien compilé, mais il faut vérifier si MIOpen est bien détecté au runtime :
|
||
|
||
```bash
|
||
docker logs speaches-stt 2>&1 | grep -iE "cudnn|miopen|conv1d|error|gpu|hip"
|
||
```
|
||
|
||
Colle le résultat — si tu revois `Conv1D on GPU currently requires the cuDNN library`, le lien vers `libMIOpen.so` ne fonctionne pas au runtime.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches\$ docker logs --tail 50 -f speaches-stt
|
||
|
||
2026-02-21 22:02:10,196:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='float16', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[]
|
||
2026-02-21 22:02:11,122:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:02:11,153:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:02:11,298:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
|
||
2026-02-21 22:02:11,383:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
|
||
new
|
||
2026-02-21 22:02:11,395:INFO:speaches.main:create_app:202:
|
||
|
||
To view the gradio web ui of speaches open your browser and visit:
|
||
|
||
http://localhost:8000/
|
||
|
||
INFO: Started server process [1]
|
||
INFO: Waiting for application startup.
|
||
INFO: Application startup complete.
|
||
INFO: Uvicorn running on [http://0.0.0.0:8000](http://0.0.0.0:8000) (Press CTRL+C to quit)
|
||
2026-02-21 22:02:11,856:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:02:11,856:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:02:11,949:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:02:11,949:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:02:12,823:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:02:13,007:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2\&filter=automatic-speech-recognition\&cardData=True HTTP/11" 200 242732
|
||
2026-02-21 22:02:13,180:WARNING:huggingface_hub.repocard_data:__init__:368:Invalid model-index. Not loading eval results into CardData.
|
||
Invalid model-index. Not loading eval results into CardData.
|
||
2026-02-21 22:02:13,295:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/Systran/faster-whisper-large-v3/revision/main HTTP/11" 200 4572
|
||
Fetching 6 files: 100%|██████████| 6/6 [00:00<00:00, 141381.03it/s]
|
||
INFO: 172.18.0.3:56428 - "POST /v1/models/Systran/faster-whisper-large-v3 HTTP/1.1" 200 OK
|
||
^Cfolzo@folzo-Corp:~/speaches\# Créer un fichier de test (si tu n'en as pas)s)
|
||
ffmpeg -f lavfi -i "sine=frequency=440:duration=3" /tmp/test.wav
|
||
|
||
# Tester l'API
|
||
|
||
curl -X POST http://localhost:8200/v1/audio/transcriptions \\
|
||
-H "Authorization: Bearer doesntmatter" \\
|
||
-F "file=@/tmp/test.wav" \\
|
||
-F "model=Systran/faster-whisper-large-v3"
|
||
La commande « ffmpeg » n'a pas été trouvée, mais peut être installée avec :
|
||
sudo snap install ffmpeg \# version 4.3.1, or
|
||
sudo apt install ffmpeg \# version 7:7.1.1-1ubuntu4.2
|
||
Voir « snap info ffmpeg » pour des versions additionelles.
|
||
Internal Server Errorfolzo@folzo-Corp:~/speaches\$ docker logs speaches-stt 2>\&1 | grep -iE "cudnn|miopen|conv1d|error|gpu|hip" docker logs speaches-stt 2>\&1 | grep -iE "cudnn|miopen|conv1d|error|gpu|hip"
|
||
2026-02-21 22:04:47.797231021 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
|
||
2026-02-21 22:04:47.797249742 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
|
||
2026-02-21 22:04:47.801851599 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
|
||
2026-02-21 22:04:47.801861709 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
|
||
INFO: 172.18.0.1:55960 - "POST /v1/audio/transcriptions HTTP/1.1" 500 Internal Server Error
|
||
ERROR: Exception in ASGI application
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
|
||
File "/home/ubuntu/speaches/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
|
||
RuntimeError: parallel_for failed: hipErrorInvalidDeviceFunction: invalid device function
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Deux problèmes distincts dans ces logs :
|
||
|
||
## Problème 1 : ONNX Runtime cherche CUDA/cuBLAS
|
||
|
||
Les erreurs `libcublasLt.so.12` et `CUDAExecutionProvider` viennent du modèle Silero VAD qui tourne via ONNX Runtime — il cherche des libs CUDA qui n'existent pas sur ROCm. C'est un **warning non bloquant**, il fallback en CPU automatiquement.
|
||
|
||
## Problème 2 : `hipErrorInvalidDeviceFunction` ← cause réelle du crash
|
||
|
||
```
|
||
RuntimeError: parallel_for failed: hipErrorInvalidDeviceFunction: invalid device function
|
||
```
|
||
|
||
CTranslate2-ROCm a été compilé pour `gfx1101` mais ta GPU répond à un kernel HIP incompatible. Vérifie quelle architecture est réellement exposée :
|
||
|
||
```bash
|
||
# Sur folzo-Corp, vérifier la GPU vue par ROCm
|
||
docker run --rm \
|
||
--device /dev/kfd \
|
||
--device /dev/dri \
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \
|
||
speaches:rocm-ct2 \
|
||
/opt/rocm-6.3.4/bin/rocminfo | grep -E "gfx|Name"
|
||
```
|
||
|
||
|
||
## Fix probable : forcer le fallback CPU pour CT2
|
||
|
||
En attendant, force speaches à utiliser le CPU dans ton `docker-compose.yml` :
|
||
|
||
```yaml
|
||
services:
|
||
speaches-stt:
|
||
environment:
|
||
- WHISPER__INFERENCE_DEVICE=cpu
|
||
- WHISPER__COMPUTE_TYPE=int8
|
||
```
|
||
|
||
Puis :
|
||
|
||
```bash
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
Le CPU sera plus lent (~2-3x) mais fonctionnel. On réglera le GPU après avoir confirmé l'architecture exacte avec `rocminfo`.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches\$ \# Sur folzo-Corp, vérifier la GPU vue par ROCm
|
||
|
||
docker run --rm \\
|
||
--device /dev/kfd \\
|
||
--device /dev/dri \\
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 \\
|
||
speaches:rocm-ct2 \\
|
||
/opt/rocm-6.3.4/bin/rocminfo | grep -E "gfx|Name"
|
||
Name: AMD Ryzen 7 5800X3D 8-Core Processor
|
||
Marketing Name: AMD Ryzen 7 5800X3D 8-Core Processor
|
||
Vendor Name: CPU
|
||
Name: gfx1100
|
||
Marketing Name: AMD Radeon RX 7800 XT
|
||
Vendor Name: AMD
|
||
Name: amdgcn-amd-amdhsa--gfx1100
|
||
folzo@folzo-Corp:~/speaches\$
|
||
|
||
Voilà le problème ! Ta GPU est **`gfx1100`** (RX 7800 XT) mais le build a été compilé pour **`gfx1101`**. Ce sont deux architectures différentes et les kernels HIP ne sont pas compatibles entre elles.
|
||
|
||
## Rebuild avec gfx1100
|
||
|
||
Il faut changer **3 occurrences** de `gfx1101` → `gfx1100` dans le Dockerfile :
|
||
|
||
```bash
|
||
sed -i 's/gfx1101/gfx1100/g' ~/speaches/src/Dockerfile.rocm-ct2
|
||
|
||
# Vérifier
|
||
grep gfx ~/speaches/src/Dockerfile.rocm-ct2
|
||
```
|
||
|
||
Tu dois voir :
|
||
|
||
```
|
||
-DCMAKE_HIP_ARCHITECTURES=gfx1100
|
||
PYTORCH_ROCM_ARCH=gfx1100
|
||
HSA_OVERRIDE_GFX_VERSION=11.0.0 ← celui-là reste inchangé
|
||
```
|
||
|
||
Puis rebuild — les étapes 1-3 seront en cache, seule la compilation cmake repart (~50s) :
|
||
|
||
```bash
|
||
cd ~/speaches/src
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Ensuite relance le stack :
|
||
|
||
```bash
|
||
cd ~/speaches
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# cd ~/speaches
|
||
|
||
docker compose down \&\& docker compose up -d
|
||
docker logs -f speaches-stt
|
||
|
||
Tu as juste collé les commandes sans les lancer ou sans coller le résultat. Lance-les :
|
||
|
||
```bash
|
||
cd ~/speaches
|
||
docker compose down && docker compose up -d
|
||
docker logs -f speaches-stt
|
||
```
|
||
|
||
Et colle ce que tu vois dans le terminal — notamment si tu vois encore `hipErrorInvalidDeviceFunction` ou au contraire `GPU` qui se charge correctement.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ cd ~/speaches
|
||
|
||
docker compose down \&\& docker compose up -d
|
||
docker logs -f speaches-stt
|
||
[+] down 3/3
|
||
✔ Container speaches-init Removed 0.0s
|
||
✔ Container speaches-stt Removed 2.3s
|
||
✔ Network speaches_default Removed 0.1s
|
||
[+] up 3/3
|
||
✔ Network speaches_default Created 0.0s
|
||
✔ Container speaches-stt Created 0.1s
|
||
✔ Container speaches-init Created 0.1s
|
||
2026-02-21 22:11:04,355:DEBUG:speaches.main:create_app:102:Config: stt_model_ttl=300 tts_model_ttl=300 vad_model_ttl=-1 api_key=None log_level='debug' host='0.0.0.0' port=8000 allow_origins=None enable_ui=True whisper=WhisperConfig(inference_device='auto', device_index=0, compute_type='float16', cpu_threads=0, num_workers=1) loopback_host_url=None chat_completion_base_url='http://localhost:11434/v1' chat_completion_api_key=SecretStr('**********') unstable_ort_opts=OrtOptions(exclude_providers=['TensorrtExecutionProvider'], provider_priority={'CUDAExecutionProvider': 100}, provider_opts={}) otel_exporter_otlp_endpoint=None otel_service_name='speaches' preload_models=[]
|
||
2026-02-21 22:11:05,251:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:11:05,276:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:11:05,490:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
|
||
2026-02-21 22:11:05,510:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "HEAD /api/telemetry/https%3A/api.gradio.app/gradio-initiated-analytics HTTP/11" 200 0
|
||
new
|
||
2026-02-21 22:11:05,522:INFO:speaches.main:create_app:202:
|
||
|
||
To view the gradio web ui of speaches open your browser and visit:
|
||
|
||
http://localhost:8000/
|
||
|
||
INFO: Started server process [1]
|
||
INFO: Waiting for application startup.
|
||
INFO: Application startup complete.
|
||
INFO: Uvicorn running on [http://0.0.0.0:8000](http://0.0.0.0:8000) (Press CTRL+C to quit)
|
||
2026-02-21 22:11:05,959:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:11:05,959:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:11:06,061:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:11:06,061:INFO:httpx:_send_single_request:1025:HTTP Request: GET [https://api.gradio.app/pkg-version](https://api.gradio.app/pkg-version) "HTTP/1.1 200 OK"
|
||
2026-02-21 22:11:07,377:DEBUG:urllib3.connectionpool:_new_conn:1051:Starting new HTTPS connection (1): huggingface.co:443
|
||
2026-02-21 22:11:07,550:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models?filter=ctranslate2\&filter=automatic-speech-recognition\&cardData=True HTTP/11" 200 242732
|
||
2026-02-21 22:11:07,725:WARNING:huggingface_hub.repocard_data:__init__:368:Invalid model-index. Not loading eval results into CardData.
|
||
Invalid model-index. Not loading eval results into CardData.
|
||
2026-02-21 22:11:07,837:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/Systran/faster-whisper-large-v3/revision/main HTTP/11" 200 4572
|
||
Fetching 6 files: 100%|██████████| 6/6 [00:00<00:00, 139810.13it/s]
|
||
INFO: 172.18.0.3:53654 - "POST /v1/models/Systran/faster-whisper-large-v3 HTTP/1.1" 200 OK
|
||
2026-02-21 22:11:25,034:DEBUG:speaches.dependencies:audio_file_dependency:89:Decoding audio file: 00aab224-be8c-4045-9158-bdfd2b9f24c0.mp3, content_type: None, header: Headers({'content-disposition': 'form-data; name="file"; filename="00aab224-be8c-4045-9158-bdfd2b9f24c0.mp3"'}), size: 43629
|
||
2026-02-21 22:11:25,109:DEBUG:speaches.dependencies:audio_file_dependency:103:Decoded 5.4s of audio in 0.07514s (RTF: 0.013914737591457432)
|
||
2026-02-21 22:11:25,110:DEBUG:asyncio:__init__:64:Using selector: EpollSelector
|
||
2026-02-21 22:11:25,118:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model silero_vad_v5
|
||
2026-02-21 22:11:25,119:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:23:Available ONNX Runtime providers: ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']
|
||
2026-02-21 22:11:25,119:DEBUG:speaches.executors.shared.base_model_manager:get_ort_providers_with_options:33:Using ONNX Runtime providers: [('CUDAExecutionProvider', {}), ('CPUExecutionProvider', {})]
|
||
2026-02-21 22:11:25.120366595 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
|
||
|
||
2026-02-21 22:11:25.120378835 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
|
||
2026-02-21 22:11:25.123420246 [E:onnxruntime:Default, provider_bridge_ort.cc:2195 TryGetProviderInfo_CUDA] /onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1778 onnxruntime::Provider\& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcublasLt.so.12: cannot open shared object file: No such file or directory
|
||
|
||
2026-02-21 22:11:25.123429467 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1055 CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html\#requirements), make sure they're in the PATH, and that your GPU is supported.
|
||
2026-02-21 22:11:25,124:INFO:speaches.executors.shared.base_model_manager:_load:75:Model silero_vad_v5 loaded in 0.01s
|
||
2026-02-21 22:11:25,124:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for silero_vad_v5, self.ref_count=1
|
||
2026-02-21 22:11:25,148:DEBUG:speaches.executors.silero_vad_v5:__call__:138:VAD model inference took 0.0240s
|
||
2026-02-21 22:11:25,149:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for silero_vad_v5, self.ref_count=0
|
||
2026-02-21 22:11:25,149:INFO:speaches.executors.shared.base_model_manager:_decrement_ref:98:Model silero_vad_v5 is idle, not unloading
|
||
2026-02-21 22:11:25,149:DEBUG:speaches.executors.silero_vad_v5:get_speech_timestamps:307:VAD processing took 0.0307s for 5.40s audio
|
||
2026-02-21 22:11:25,149:DEBUG:speaches.executors.shared.base_model_manager:_load:72:Loading model Systran/faster-whisper-large-v3
|
||
2026-02-21 22:11:25,257:DEBUG:urllib3.connectionpool:_make_request:546:https://huggingface.co:443 "GET /api/models/Systran/faster-whisper-large-v3/revision/main HTTP/11" 200 4572
|
||
2026-02-21 22:11:33,945:INFO:speaches.executors.shared.base_model_manager:_load:75:Model Systran/faster-whisper-large-v3 loaded in 8.80s
|
||
2026-02-21 22:11:33,945:DEBUG:speaches.executors.shared.base_model_manager:_increment_ref:83:Incremented ref count for Systran/faster-whisper-large-v3, self.ref_count=1
|
||
2026-02-21 22:11:33,945:INFO:faster_whisper:transcribe:391:Processing audio with duration 00:05.400
|
||
2026-02-21 22:11:33,945:INFO:faster_whisper:transcribe:428:VAD filter removed 00:02.424 of audio
|
||
2026-02-21 22:11:38,128:INFO:faster_whisper:transcribe:463:Detected language 'fr' with probability 0.99
|
||
2026-02-21 22:11:38,525:INFO:speaches.executors.whisper:handle_non_streaming_transcription_request:181:Transcribed 5.4 seconds of audio in 13.375739333001547 seconds
|
||
2026-02-21 22:11:38,525:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:88:Decremented ref count for Systran/faster-whisper-large-v3, self.ref_count=0
|
||
2026-02-21 22:11:38,525:DEBUG:speaches.executors.shared.base_model_manager:_decrement_ref:91:Model Systran/faster-whisper-large-v3 is idle, scheduling offload in 300s
|
||
2026-02-21 22:11:38,525:ERROR:speaches.routers.stt:transcription_response_to_http_response:105:Unexpected streaming transcription response type: <class 'openai.types.audio.transcription.Transcription'>
|
||
INFO: 192.168.1.27:39786 - "POST /v1/audio/transcriptions HTTP/1.1" 200 OK
|
||
^Cfolzo@folzo-Corp:~/speaches\$
|
||
|
||
La transcription fonctionne ! `200 OK` et langue détectée `fr` avec probabilité `0.99`. Mais deux points à noter :
|
||
|
||
## ✅ Ce qui marche
|
||
|
||
- Transcription réussie en `200 OK`
|
||
- Langue française détectée à 99%
|
||
- Modèle `large-v3` chargé correctement
|
||
|
||
|
||
## ⚠️ GPU pas encore utilisé
|
||
|
||
Le modèle tourne encore en **CPU** — `13.37s` pour 5.4s d'audio (RTF > 1), ce qui confirme qu'il n'utilise pas la RX 7800 XT. Le rebuild avec `gfx1100` n'a pas encore été fait.
|
||
|
||
## 🔴 Erreur mineure à corriger
|
||
|
||
```
|
||
Unexpected streaming transcription response type: Transcription
|
||
```
|
||
|
||
C'est un bug speaches côté format de réponse, non bloquant pour l'instant.
|
||
|
||
***
|
||
|
||
Lance le rebuild maintenant pour activer le GPU :
|
||
|
||
```bash
|
||
cd ~/speaches/src
|
||
# Vérifier que gfx1101 a bien été remplacé
|
||
grep gfx Dockerfile.rocm-ct2
|
||
|
||
# Si encore gfx1101, corriger
|
||
sed -i 's/gfx1101/gfx1100/g' Dockerfile.rocm-ct2
|
||
|
||
# Rebuild
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
Avec `gfx1100` correct, la transcription devrait passer de ~13s à **<1s** grâce au GPU.
|
||
|
||
---
|
||
|
||
# ok sur le serveur de effi j'ai le podcast speech qui tourne, il prend toute la puissance du processeur, il faut que je transfert celui-ci sur le pc d ejue
|
||
|
||
Bonne idée — `openedai-speech` est gourmand en CPU et ton PC de jeu a une RX 7800 XT qui peut accélérer la synthèse vocale.
|
||
|
||
## Récupérer la config actuelle sur effi
|
||
|
||
```bash
|
||
ssh ubuntu@192.168.1.27
|
||
docker inspect openedai-speech | grep -A 30 '"Env"'
|
||
cat $(docker inspect openedai-speech | grep -o '"[^"]*docker-compose[^"]*"' | head -1)
|
||
```
|
||
|
||
Ou directement trouver le docker-compose :
|
||
|
||
```bash
|
||
find ~ -name "docker-compose*.yml" | xargs grep -l openedai-speech 2>/dev/null
|
||
```
|
||
|
||
|
||
## Arrêter sur effi
|
||
|
||
```bash
|
||
# Sur effi-server
|
||
cd /dossier/du/compose
|
||
docker compose stop openedai-speech
|
||
docker compose rm openedai-speech
|
||
```
|
||
|
||
|
||
## Déployer sur folzo-Corp
|
||
|
||
Crée un dossier dédié sur ta machine :
|
||
|
||
```bash
|
||
mkdir ~/openedai-speech && cd ~/openedai-speech
|
||
```
|
||
|
||
Colle le `docker-compose.yml` d'effi et adapte si besoin pour ROCm :
|
||
|
||
```yaml
|
||
services:
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./voices:/app/voices
|
||
- ./config:/app/config
|
||
devices:
|
||
- /dev/kfd
|
||
- /dev/dri
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
```
|
||
|
||
|
||
***
|
||
|
||
**Colle le docker-compose actuel d'effi** pour openedai-speech — je l'adapte exactement pour folzo-Corp avec ROCm.
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$ find ~ -name "docker-compose*.yml" | xargs grep -l openedai-speech 2>/dev/null
|
||
|
||
/home/effi/effi/docker-compose.yml
|
||
effi@effi-server:~\$ cd /home/effi
|
||
effi@effi-server:~\$ cd /home/effi/
|
||
effi@effi-server:~\$ pwd
|
||
/home/effi
|
||
|
||
```bash
|
||
cat ~/effi/docker-compose.yml
|
||
```
|
||
|
||
Colle le contenu — je prépare la config adaptée pour folzo-Corp avec ROCm.
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$ cat ~/effi/docker-compose.yml
|
||
|
||
# ═══════════════════════════════════════════════════════════
|
||
|
||
# EFFI SERVER - Stack IA Locale
|
||
|
||
# Machine : effi-server (192.168.1.27)
|
||
|
||
# ═══════════════════════════════════════════════════════════
|
||
|
||
services:
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 1. OPEN WEBUI - Interface Chat Effi
|
||
|
||
# → [http://192.168.1.27:3000](http://192.168.1.27:3000)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
open-webui:
|
||
image: ghcr.io/open-webui/open-webui:main
|
||
container_name: open-webui
|
||
restart: unless-stopped
|
||
extra_hosts:
|
||
- "host.docker.internal:host-gateway"
|
||
ports:
|
||
- "3000:8080"
|
||
environment:
|
||
- OLLAMA_BASE_URL=http://host.docker.internal:3011
|
||
- WEBUI_SECRET_KEY=\${WEBUI_SECRET_KEY}
|
||
- VECTOR_DB=qdrant
|
||
- QDRANT_URI=http://qdrant:6333
|
||
- DEFAULT_LOCALE=fr-FR
|
||
- ENABLE_MEMORIES=true
|
||
- AUDIO_STT_ENGINE=openai
|
||
- AUDIO_STT_OPENAI_API_BASE_URL=http://192.168.1.11:8200/v1
|
||
- AUDIO_STT_OPENAI_API_KEY=anything
|
||
- AUDIO_STT_MODEL=Systran/faster-whisper-large-v3
|
||
volumes:
|
||
- open-webui-data:/app/backend/data
|
||
depends_on:
|
||
- qdrant
|
||
- wol-proxy
|
||
networks:
|
||
- effi-net
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 2. WOL PROXY - Réveil PC Gaming avant appel Ollama
|
||
|
||
# → Proxy :3011 → PC Gaming :11434
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
wol-proxy:
|
||
build: ./wol-proxy
|
||
container_name: wol-proxy
|
||
restart: unless-stopped
|
||
network_mode: host \# obligatoire pour broadcast WOL
|
||
environment:
|
||
- TARGET_HOST=${OLLAMA_HOST}
|
||
- TARGET_PORT=11434
|
||
- LISTEN_PORT=3011
|
||
- MAC_ADDRESS=${PC_GAMING_MAC}
|
||
- LISTEN_PORT=3011
|
||
- WAKE_TIMEOUT=60
|
||
- CHECK_INTERVAL=5
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 3. MCPO - Proxy outils MCP (Obsidian, etc.)
|
||
|
||
# → [http://192.168.1.27:8000](http://192.168.1.27:8000)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
mcpo:
|
||
image: ghcr.io/open-webui/mcpo:main
|
||
container_name: mcpo
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8000:8000"
|
||
volumes:
|
||
- ./mcpo-config:/app/config:ro
|
||
- ./mcpo-patch.sh:/mcpo-patch.sh:ro
|
||
entrypoint: ["sh", "/mcpo-patch.sh"]
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 4. QDRANT - Vector Store (RAG sémantique)
|
||
|
||
# → [http://192.168.1.27:6333](http://192.168.1.27:6333)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
qdrant:
|
||
image: qdrant/qdrant:latest
|
||
container_name: qdrant
|
||
restart: unless-stopped
|
||
ports:
|
||
- "6333:6333"
|
||
- "6334:6334"
|
||
volumes:
|
||
- ./qdrant-storage:/qdrant/storage:z
|
||
networks:
|
||
- effi-net
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 5. COUCHDB - Backend Obsidian LiveSync
|
||
|
||
# → [http://192.168.1.27:5984](http://192.168.1.27:5984)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
couchdb:
|
||
image: couchdb:3.3
|
||
container_name: couchdb
|
||
restart: unless-stopped
|
||
ports:
|
||
- "5984:5984"
|
||
environment:
|
||
- COUCHDB_USER=${COUCHDB_USER}
|
||
- COUCHDB_PASSWORD=${COUCHDB_PASSWORD}
|
||
volumes:
|
||
- ./couchdb-data:/opt/couchdb/data
|
||
networks:
|
||
- effi-net
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 6. N8N - Automatisation autonome Effi
|
||
|
||
# → [http://192.168.1.27:5678](http://192.168.1.27:5678)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
n8n:
|
||
image: docker.n8n.io/n8nio/n8n:latest
|
||
container_name: n8n
|
||
restart: unless-stopped
|
||
ports:
|
||
- "5678:5678"
|
||
environment:
|
||
- N8N_HOST=0.0.0.0
|
||
- N8N_PORT=5678
|
||
- N8N_PROTOCOL=http
|
||
- WEBHOOK_URL=http://192.168.1.27:5678
|
||
- N8N_BASIC_AUTH_ACTIVE=true
|
||
- N8N_BASIC_AUTH_USER=${N8N_USER}
|
||
- N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
|
||
- GENERIC_TIMEZONE=Europe/Paris
|
||
- TZ=Europe/Paris
|
||
volumes:
|
||
- ./n8n-data:/home/node/.n8n
|
||
networks:
|
||
- effi-net
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 7. PIPELINES - Middleware Open WebUI (mem0 memory)
|
||
|
||
# → [http://192.168.1.27:9099](http://192.168.1.27:9099)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
pipelines:
|
||
image: ghcr.io/open-webui/pipelines:main
|
||
container_name: pipelines
|
||
restart: unless-stopped
|
||
ports:
|
||
- "9099:9099"
|
||
volumes:
|
||
- pipelines-data:/app/pipelines
|
||
networks:
|
||
- effi-net
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 8. WHISPER - Speech To Text (STT)
|
||
|
||
# → [http://192.168.1.27:8200](http://192.168.1.27:8200)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
whisper:
|
||
image: fedirz/faster-whisper-server:latest-cpu
|
||
container_name: whisper
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8200:8000"
|
||
volumes:
|
||
- whisper-cache:/root/.cache/huggingface
|
||
environment:
|
||
- WHISPER__MODEL=guillaumekln/faster-whisper-tiny
|
||
- WHISPER__LANGUAGE=fr
|
||
- HF_HUB_OFFLINE=0
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
# 9. OPENEDAI-SPEECH - Text To Speech (TTS)
|
||
|
||
# → [http://192.168.1.27:8100](http://192.168.1.27:8100)
|
||
|
||
# ─────────────────────────────────────────────────────────
|
||
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
container_name: openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./tts-voices:/app/voices
|
||
- ./tts-config:/app/config
|
||
|
||
networks:
|
||
effi-net:
|
||
driver: bridge
|
||
|
||
volumes:
|
||
open-webui-data:
|
||
pipelines-data:
|
||
whisper-cache:
|
||
|
||
Parfait, j'ai tout ce qu'il faut. Voici le plan :
|
||
|
||
## Sur effi-server — retirer openedai-speech
|
||
|
||
```bash
|
||
ssh ubuntu@192.168.1.27
|
||
cd ~/effi
|
||
|
||
# Arrêter et supprimer le conteneur
|
||
docker compose stop openedai-speech
|
||
docker compose rm -f openedai-speech
|
||
|
||
# Copier les données voices/config vers folzo-Corp
|
||
scp -r ~/effi/tts-voices folzo@192.168.1.11:~/openedai-speech/
|
||
scp -r ~/effi/tts-config folzo@192.168.1.11:~/openedai-speech/
|
||
```
|
||
|
||
|
||
## Sur folzo-Corp — créer le service
|
||
|
||
```bash
|
||
mkdir -p ~/openedai-speech
|
||
cat > ~/openedai-speech/docker-compose.yml << 'EOF'
|
||
services:
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
container_name: openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./tts-voices:/app/voices
|
||
- ./tts-config:/app/config
|
||
devices:
|
||
- /dev/kfd
|
||
- /dev/dri
|
||
group_add:
|
||
- video
|
||
- render
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
- HIP_VISIBLE_DEVICES=0
|
||
EOF
|
||
|
||
cd ~/openedai-speech
|
||
docker compose up -d
|
||
docker logs -f openedai-speech
|
||
```
|
||
|
||
|
||
## Mettre à jour Open WebUI sur effi
|
||
|
||
Dans `~/effi/docker-compose.yml`, changer l'URL TTS de `192.168.1.27:8100` → `192.168.1.11:8100` :
|
||
|
||
```bash
|
||
# Sur effi-server
|
||
grep -n "8100\|TTS\|speech" ~/effi/docker-compose.yml
|
||
```
|
||
|
||
Si l'URL est configurée dans l'interface Open WebUI plutôt que dans le compose, va dans **Admin Panel → Settings → Audio** et change l'URL TTS vers `http://192.168.1.11:8100`.
|
||
|
||
---
|
||
|
||
# effi@effi-server:~\$
|
||
|
||
cd ~/effi
|
||
|
||
# Arrêter et supprimer le conteneur
|
||
|
||
docker compose stop openedai-speech
|
||
docker compose rm -f openedai-speech
|
||
|
||
# Copier les données voices/config vers folzo-Corp
|
||
|
||
scp -r ~/effi/tts-voices folzo@192.168.1.11:~/openedai-speech/
|
||
scp -r ~/effi/tts-config folzo@192.168.1.11:~/openedai-speech/
|
||
[+] stop 1/1
|
||
✔ Container openedai-speech Stopped 10.7s
|
||
Going to remove openedai-speech
|
||
[+] remove 1/1
|
||
✔ Container openedai-speech Removed 0.1s
|
||
ssh: connect to host 192.168.1.11 port 22: Connection refused
|
||
scp: Connection closed
|
||
ssh: connect to host 192.168.1.11 port 22: Connection refused
|
||
scp: Connection closed
|
||
effi@effi-server:~/effi\$
|
||
|
||
SSH n'est pas installé/activé sur folzo-Corp. Deux options :
|
||
|
||
## Option 1 — Activer SSH sur folzo-Corp
|
||
|
||
```bash
|
||
# Sur folzo-Corp
|
||
sudo apt install openssh-server
|
||
sudo systemctl enable --now ssh
|
||
sudo systemctl status ssh
|
||
```
|
||
|
||
Puis relancer le scp depuis effi :
|
||
|
||
```bash
|
||
scp -r ~/effi/tts-voices folzo@192.168.1.11:~/openedai-speech/
|
||
scp -r ~/effi/tts-config folzo@192.168.1.11:~/openedai-speech/
|
||
```
|
||
|
||
|
||
## Option 2 — Copier dans l'autre sens (depuis folzo-Corp)
|
||
|
||
Si tu préfères ne pas ouvrir SSH sur folzo-Corp, tire les fichiers depuis effi vers toi :
|
||
|
||
```bash
|
||
# Sur folzo-Corp
|
||
mkdir -p ~/openedai-speech
|
||
scp -r ubuntu@192.168.1.27:~/effi/tts-voices ~/openedai-speech/
|
||
scp -r ubuntu@192.168.1.27:~/effi/tts-config ~/openedai-speech/
|
||
```
|
||
|
||
|
||
***
|
||
|
||
Les dossiers `tts-voices` et `tts-config` sont-ils vides ou contiennent-ils des fichiers importants ? Si c'est vide/par défaut, tu peux aussi juste créer les dossiers vides sur folzo-Corp et laisser openedai-speech les recréer au démarrage :
|
||
|
||
```bash
|
||
mkdir -p ~/openedai-speech/tts-voices ~/openedai-speech/tts-config
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ \# Sur folzo-Corp
|
||
|
||
mkdir -p ~/openedai-speech
|
||
scp -r effi@192.168.1.27:~/effi/tts-voices ~/openedai-speech/
|
||
scp -r effi@192.168.1.27:~/effi/tts-config ~/openedai-speech/
|
||
effi@192.168.1.27's password:
|
||
en_GB-northern_english_male-medium.onnx.json 100% 4847 4.8MB/s 00:00
|
||
onyx.wav 100% 372KB 47.0MB/s 00:00
|
||
config.json 100% 4368 5.4MB/s 00:00
|
||
vocab.json 100% 353KB 57.0MB/s 00:00
|
||
speakers_xtts.pth 100% 7573KB 105.5MB/s 00:00
|
||
model.pth 100% 1781MB 111.2MB/s 00:16
|
||
hash.md5 100% 32 47.0KB/s 00:00
|
||
en_US-libritts_r-medium.onnx.json 100% 20KB 17.5MB/s 00:00
|
||
version.txt 100% 1 1.7KB/s 00:00
|
||
alloy.wav 100% 300KB 56.3MB/s 00:00
|
||
echo.wav 100% 386KB 59.5MB/s 00:00
|
||
en_GB-northern_english_male-medium.onnx 100% 60MB 111.4MB/s 00:00
|
||
en_US-libritts_r-medium.onnx 100% 75MB 111.5MB/s 00:00
|
||
nova.wav 100% 400KB 74.5MB/s 00:00
|
||
voices.json 100% 204KB 49.4MB/s 00:00
|
||
shimmer.wav 100% 365KB 56.9MB/s 00:00
|
||
fable.wav 100% 393KB 57.1MB/s 00:00
|
||
effi@192.168.1.27's password:
|
||
pre_process_map.yaml 100% 503 985.3KB/s 00:00
|
||
voice_to_speaker.yaml 100% 1536 3.2MB/s 00:00
|
||
folzo@folzo-Corp:~/speaches/src\$ mkdir -p ~/openedai-speech/tts-voices ~/openedai-speech/tts-config
|
||
folzo@folzo-Corp:~/speaches/src\$
|
||
|
||
Parfait, les voix/config sont bien copiés. Il reste à lancer le service TTS sur ton PC de jeu.
|
||
|
||
## 1. Préparer la structure sur folzo-Corp
|
||
|
||
Tu as déjà les dossiers, vérifie juste :
|
||
|
||
```bash
|
||
ls ~/openedai-speech
|
||
ls ~/openedai-speech/tts-voices
|
||
ls ~/openedai-speech/tts-config
|
||
```
|
||
|
||
|
||
## 2. Créer un docker-compose pour openedai-speech (avec ROCm)
|
||
|
||
Sur folzo-Corp :
|
||
|
||
```bash
|
||
cat > ~/openedai-speech/docker-compose.yml << 'EOF'
|
||
services:
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
container_name: openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./tts-voices:/app/voices
|
||
- ./tts-config:/app/config
|
||
devices:
|
||
- /dev/kfd
|
||
- /dev/dri
|
||
group_add:
|
||
- video
|
||
- render
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
- HIP_VISIBLE_DEVICES=0
|
||
EOF
|
||
```
|
||
|
||
Puis lance :
|
||
|
||
```bash
|
||
cd ~/openedai-speech
|
||
docker compose up -d
|
||
docker logs -f openedai-speech
|
||
```
|
||
|
||
Tu dois voir qu’il écoute sur `0.0.0.0:8000`.
|
||
|
||
## 3. Pointer Open WebUI vers le nouveau TTS
|
||
|
||
Comme l’URL de TTS est désormais sur ton PC de jeu :
|
||
|
||
- Hôte : `192.168.1.11`
|
||
- Port : `8100`
|
||
- Base URL TTS : `http://192.168.1.11:8100`
|
||
|
||
Dans Open WebUI (sur effi) → Admin / Settings / Audio (ou TTS) → mets cette URL.
|
||
|
||
Ensuite, teste une génération vocale depuis Open WebUI; si ça ne répond pas, donne-moi les 20 dernières lignes de `docker logs openedai-speech`.
|
||
<span style="display:none">[^46_1][^46_10][^46_2][^46_3][^46_4][^46_5][^46_6][^46_7][^46_8][^46_9]</span>
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^46_1]: https://docs.openwebui.com.cn/tutorials/text-to-speech/openedai-speech-integration/
|
||
|
||
[^46_2]: https://github.com/matatonic/openedai-speech/blob/main/docker-compose.rocm.yml
|
||
|
||
[^46_3]: https://github.com/matatonic/openedai-speech/blob/main/docker-compose.min.yml
|
||
|
||
[^46_4]: https://github.com/matatonic/openedai-speech/blob/main/docker-compose.yml
|
||
|
||
[^46_5]: https://huggingface.co/spaces/imseldrith/TTS-OPENAI-FREE/blame/32147f39458c73eb7ac3c0f73ee758e109e2459b/docker-compose.yml
|
||
|
||
[^46_6]: https://www.youtube.com/watch?v=0ufmhTbeCWk
|
||
|
||
[^46_7]: https://docs.openwebui.cn/tutorials/text-to-speech/openedai-speech-integration/
|
||
|
||
[^46_8]: https://huggingface.co/spaces/imseldrith/TTS-OPENAI-FREE/blob/32147f39458c73eb7ac3c0f73ee758e109e2459b/docker-compose.yml
|
||
|
||
[^46_9]: https://github.com/open-webui/docs/blob/main/docs/features/audio/text-to-speech/openedai-speech-integration.md
|
||
|
||
[^46_10]: https://hub.docker.com/r/nokkela/nokkela-voice-assistant
|
||
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/speaches/src\$ cd ~/openedai-speech
|
||
|
||
docker compose up -d
|
||
docker logs -f openedai-speech
|
||
[+] up 16/16
|
||
✔ Image ghcr.io/matatonic/openedai-speech Pulled 83.3s
|
||
✔ Network openedai-speech_default Created 0.0s
|
||
✔ Container openedai-speech Created 0.5s
|
||
Error response from daemon: Unable to find group render: no matching entries in group file
|
||
folzo@folzo-Corp:~/openedai-speech\$
|
||
|
||
Le conteneur démarre, mais l’option `group_add: render` casse car le groupe n’existe pas sur ta machine.
|
||
|
||
## 1. Voir les groupes GPU disponibles
|
||
|
||
```bash
|
||
getent group | grep -E "video|render"
|
||
```
|
||
|
||
Tu verras sûrement `video`, mais pas `render`.
|
||
|
||
## 2. Corriger le docker-compose
|
||
|
||
Édite `~/openedai-speech/docker-compose.yml` et retire `render` :
|
||
|
||
```yaml
|
||
services:
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
container_name: openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./tts-voices:/app/voices
|
||
- ./tts-config:/app/config
|
||
devices:
|
||
- /dev/kfd
|
||
- /dev/dri
|
||
group_add:
|
||
- video
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
- HIP_VISIBLE_DEVICES=0
|
||
```
|
||
|
||
Puis relance :
|
||
|
||
```bash
|
||
docker compose down
|
||
docker compose up -d
|
||
docker logs -f openedai-speech
|
||
```
|
||
|
||
Colle les 20 dernières lignes des logs si tu veux qu’on vérifie qu’il écoute bien sur `0.0.0.0:8000`.
|
||
|
||
---
|
||
|
||
# folzo@folzo-Corp:~/openedai-speech\$ getent group | grep -E "video|render"
|
||
|
||
video:x:44:ollama
|
||
render:x:991:ollama
|
||
folzo@folzo-Corp:~/openedai-speech\$
|
||
|
||
Docker a râlé parce que ces groupes n’existent **pas dans le conteneur**, même s’ils existent sur l’hôte. Il faut passer les GID numériques plutôt que les noms.
|
||
|
||
## 1. Récupérer les GID
|
||
|
||
Tu les as déjà :
|
||
|
||
- `video:x:44:ollama` → GID `44`
|
||
- `render:x:991:ollama` → GID `991`
|
||
|
||
|
||
## 2. Modifier `docker-compose.yml`
|
||
|
||
Remplace `group_add` par les GID :
|
||
|
||
```yaml
|
||
services:
|
||
openedai-speech:
|
||
image: ghcr.io/matatonic/openedai-speech
|
||
container_name: openedai-speech
|
||
restart: unless-stopped
|
||
ports:
|
||
- "8100:8000"
|
||
volumes:
|
||
- ./tts-voices:/app/voices
|
||
- ./tts-config:/app/config
|
||
devices:
|
||
- /dev/kfd
|
||
- /dev/dri
|
||
group_add:
|
||
- "44"
|
||
- "991"
|
||
environment:
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
- HIP_VISIBLE_DEVICES=0
|
||
```
|
||
|
||
|
||
## 3. Relancer le service
|
||
|
||
```bash
|
||
cd ~/openedai-speech
|
||
docker compose down
|
||
docker compose up -d
|
||
docker logs -f openedai-speech
|
||
```
|
||
|
||
Si tout est bon, tu devrais voir un log du style « Running on http://0.0.0.0:8000 ».
|
||
|
||
---
|
||
|
||
## 📋 Résumé Complet Thread - Optimisé Markdown
|
||
|
||
### 🎯 **Objectif Initial**
|
||
|
||
Déployer **speaches** (STT Whisper ROCm) sur **folzo-Corp** (RX 7800 XT) pour libérer **effi-server** (CPU only).
|
||
|
||
### 🔧 **Problèmes Résolus**
|
||
|
||
| **Problème** | **Cause** | **Solution** |
|
||
| :-- | :-- | :-- |
|
||
| **Whisper cuDNN crash** | CTranslate2 compilé sans MIOpen | Dockerfile avec `-DWITH_CUDNN=ON -DCUDnn_LIBRARY=libMIOpen.so` [^49_1] |
|
||
| **hipErrorInvalidDeviceFunction** | gfx1101 au lieu de gfx1100 | `sed -i 's/gfx1101/gfx1100/g' Dockerfile.rocm-ct2` |
|
||
| **OpenWebUI lent (500)** | Ollama inaccessible | WOL proxy déclenche PC gaming (192.168.1.11:3011→11434) |
|
||
| **Interface réseau Ubuntu plantée** | Conflit DHCP 192.168.1.11 | Réservations MAC routeur + `ethtool wol g` |
|
||
| **TTS CPU 100% effi-server** | openedai-speech gourmand | Migré vers folzo-Corp (8100) avec ROCm gfx1100 |
|
||
|
||
### 🏗️ **Architecture Finale**
|
||
|
||
```
|
||
effi-server (192.168.1.27) ← OpenWebUI:3000
|
||
├── STT → folzo-Corp:8200 (speaches:rocm-ct2)
|
||
├── TTS → folzo-Corp:8100 (openedai-speech ROCm)
|
||
└── WOL → PC Gaming Ollama (192.168.1.11:11434)
|
||
```
|
||
|
||
|
||
### ✅ **Status Services**
|
||
|
||
| **Service** | **Hôte** | **Port** | **GPU** | **Statut** |
|
||
| :-- | :-- | :-- | :-- | :-- |
|
||
| speaches-stt | folzo-Corp | 8200 | RX 7800 XT (gfx1100) | ✅ CPU → GPU rebuild pending |
|
||
| openedai-speech | folzo-Corp | 8100 | RX 7800 XT | ✅ Démarré (group_add: "44","991") |
|
||
| OpenWebUI | effi-server | 3000 | CPU | ✅ Pointé vers folzo-Corp STT/TTS |
|
||
|
||
### 📁 **Configs Clés**
|
||
|
||
```bash
|
||
# speaches ROCm (folzo-Corp)
|
||
~/speaches/src/Dockerfile.rocm-ct2 # gfx1100 + MIOpen
|
||
docker compose up speaches-stt
|
||
|
||
# TTS ROCm (folzo-Corp)
|
||
~/openedai-speech/docker-compose.yml # group_add: ["44","991"]
|
||
```
|
||
|
||
|
||
***
|
||
|
||
## 🎛️ **Prompt Nouveau Chat**
|
||
|
||
```
|
||
**Contexte IA Locale Migrée GPU**
|
||
|
||
J'ai migré mon stack IA de effi-server (CPU) vers folzo-Corp (RX 7800 XT gfx1100 ROCm 6.3.4):
|
||
- speaches-stt:8200 → Whisper large-v3 (rebuild gfx1100 pending)
|
||
- openedai-speech:8100 → TTS ROCm (group_add 44,991 ✅)
|
||
- OpenWebUI:3000 (effi) → pointe folzo STT/TTS + WOL Ollama
|
||
|
||
**Prochaine étape**: Finaliser rebuild speaches gfx1100 et optimiser pipeline vocal complet.
|
||
|
||
**Question précise**: [INSÉRER ICI]
|
||
```
|
||
|
||
Copie-colle le prompt avec ta question suivante ! 🚀
|
||
|
||
<div align="center">⁂</div>
|
||
|
||
[^49_1]: image.jpg
|
||
|
||
|
||
---
|
||
|
||
## 📋 Résumé Complet du Thread
|
||
|
||
|
||
***
|
||
|
||
### 🖥️ Infrastructure
|
||
|
||
| Machine | IP | Rôle | GPU/CPU |
|
||
| :-- | :-- | :-- | :-- |
|
||
| **folzo-Corp** | 192.168.1.11 | PC gaming / STT+TTS | AMD RX 7800 XT (gfx1100) |
|
||
| **effi-server** | 192.168.1.27 | Serveur IA principal | CPU Intel 4 cores / 7.6GB RAM |
|
||
| **PC Gaming Ollama** | variable | LLM Ollama | GPU dédié |
|
||
|
||
|
||
***
|
||
|
||
### 🎯 Objectif du Thread
|
||
|
||
Faire tourner Whisper (STT) sur la RX 7800 XT de folzo-Corp via ROCm, en construisant CTranslate2-ROCm depuis les sources (speaches), puis migrer le TTS (openedai-speech) d'effi-server vers folzo-Corp pour libérer le CPU.
|
||
|
||
***
|
||
|
||
### 🔨 Étapes Réalisées
|
||
|
||
#### 1. Build CTranslate2-ROCm pour speaches
|
||
|
||
**Problème initial :** `RuntimeError: Conv1D on GPU currently requires the cuDNN library which is not integrated in this build`
|
||
|
||
**Cause :** CTranslate2-ROCm compilé sans support MIOpen (équivalent ROCm de cuDNN)
|
||
|
||
**Solution :** Dockerfile custom `~/speaches/src/Dockerfile.rocm-ct2` avec :
|
||
|
||
```cmake
|
||
-DWITH_CUDNN=ON
|
||
-DCUDnn_INCLUDE_DIR=/opt/rocm-6.3.4/include
|
||
-DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so
|
||
```
|
||
|
||
Image base : `rocm/dev-ubuntu-24.04:6.3.4-complete`
|
||
Source CTranslate2 : `github.com/arlo-phoenix/CTranslate2-rocm`
|
||
|
||
***
|
||
|
||
#### 2. Erreur Architecture GPU Incorrecte
|
||
|
||
**Problème :** `RuntimeError: parallel_for failed: hipErrorInvalidDeviceFunction: invalid device function`
|
||
|
||
**Cause :** Build compilé pour `gfx1101` mais la RX 7800 XT est `gfx1100`
|
||
|
||
**Diagnostic :**
|
||
|
||
```bash
|
||
docker run --device /dev/kfd --device /dev/dri \
|
||
-e HSA_OVERRIDE_GFX_VERSION=11.0.0 speaches:rocm-ct2 \
|
||
/opt/rocm-6.3.4/bin/rocminfo | grep -E "gfx|Name"
|
||
# → gfx1100 (AMD Radeon RX 7800 XT)
|
||
```
|
||
|
||
**Fix :**
|
||
|
||
```bash
|
||
sed -i 's/gfx1101/gfx1100/g' ~/speaches/src/Dockerfile.rocm-ct2
|
||
cd ~/speaches/src
|
||
docker build -f Dockerfile.rocm-ct2 -t speaches:rocm-ct2 .
|
||
```
|
||
|
||
|
||
***
|
||
|
||
#### 3. Transcription fonctionnelle (CPU en attendant rebuild)
|
||
|
||
Après le premier build, speaches fonctionne en CPU (fallback) :
|
||
|
||
- `200 OK` sur `/v1/audio/transcriptions`
|
||
- Langue `fr` détectée à 99%
|
||
- RTF > 1 (13s pour 5.4s audio) → confirme CPU, pas GPU
|
||
- ONNX Runtime cherche `libcublasLt.so.12` (CUDA) → warning non bloquant, fallback CPU automatique
|
||
|
||
**Rebuild avec gfx1100 en cours** pour activer l'accélération GPU (~10x plus rapide attendu).
|
||
|
||
***
|
||
|
||
#### 4. Problème réseau effi-server
|
||
|
||
**Symptômes :** Interface filaire effi-server plantée après reboot, OpenWebUI inaccessible
|
||
|
||
**Diagnostic :**
|
||
|
||
```
|
||
conflict detected for IP address 192.168.1.11 with host 5C:87:9C:65:95:23
|
||
```
|
||
|
||
**Cause :** Conflit DHCP — deux machines avec la même IP `192.168.1.11`
|
||
|
||
**Fix court terme :** `nmcli device disconnect enp6s0 && nmcli device connect enp6s0`
|
||
|
||
**Fix permanent recommandé :** Réservations DHCP par MAC sur le routeur + `ethtool wol g` pour la carte Realtek RTL8111
|
||
|
||
***
|
||
|
||
#### 5. OpenWebUI lent / erreurs 500
|
||
|
||
**Symptômes :** `500: Open WebUI: Server Connection Error`, lenteur UI
|
||
|
||
**Diagnostic :**
|
||
|
||
```
|
||
ERROR: open_webui.routers.ollama: Connection error
|
||
```
|
||
|
||
**Cause :** Ollama inaccessible — le PC gaming était éteint. Le `wol-proxy` sur effi-server assure le Wake-on-LAN mais le PC n'avait pas répondu à temps.
|
||
|
||
**Architecture WOL :**
|
||
|
||
```
|
||
OpenWebUI → port 3011 effi → wol-proxy → WOL magic packet → PC Gaming
|
||
→ proxy TCP vers 11434
|
||
```
|
||
|
||
|
||
***
|
||
|
||
#### 6. Deux processus zombies sur effi-server
|
||
|
||
Détectés via `ps aux` :
|
||
|
||
```
|
||
[mcpo] <defunct>
|
||
[python] <defunct>
|
||
```
|
||
|
||
**Fix :**
|
||
|
||
```bash
|
||
docker restart mcpo
|
||
```
|
||
|
||
|
||
***
|
||
|
||
#### 7. Migration openedai-speech → folzo-Corp
|
||
|
||
**Raison :** `openedai-speech` consommait ~100% CPU sur effi-server (1.06GB RAM, CPU intensif)
|
||
|
||
**Étapes :**
|
||
|
||
```bash
|
||
# Arrêt sur effi
|
||
docker compose stop openedai-speech && docker compose rm -f openedai-speech
|
||
|
||
# Copie des données depuis folzo-Corp
|
||
scp -r effi@192.168.1.27:~/effi/tts-voices ~/openedai-speech/
|
||
scp -r effi@192.168.1.27:~/effi/tts-config ~/openedai-speech/
|
||
```
|
||
|
||
**Contenu transféré :** modèles XTTS (~1.8GB), voix WAV (alloy/echo/nova/shimmer/fable/onyx), modèles ONNX piper, configs YAML
|
||
|
||
**Problème group_add :** `Unable to find group render: no matching entries in group file`
|
||
|
||
**Fix :** Utiliser GID numériques au lieu des noms :
|
||
|
||
```yaml
|
||
group_add:
|
||
- "44" # video
|
||
- "991" # render
|
||
```
|
||
|
||
|
||
***
|
||
|
||
### 📁 Fichiers Clés
|
||
|
||
```
|
||
folzo-Corp:
|
||
├── ~/speaches/
|
||
│ ├── src/Dockerfile.rocm-ct2 # Build CTranslate2 gfx1100 + MIOpen
|
||
│ └── docker-compose.yml # speaches-stt:8200
|
||
└── ~/openedai-speech/
|
||
├── docker-compose.yml # TTS ROCm gfx1100
|
||
├── tts-voices/ # Voix XTTS + ONNX
|
||
└── tts-config/ # voice_to_speaker.yaml etc.
|
||
|
||
effi-server:
|
||
└── ~/effi/docker-compose.yml # OpenWebUI + WOL + n8n + qdrant...
|
||
```
|
||
|
||
|
||
***
|
||
|
||
### ✅ État Final des Services
|
||
|
||
| Service | Hôte | Port | État | Notes |
|
||
| :-- | :-- | :-- | :-- | :-- |
|
||
| **speaches-stt** | folzo-Corp | 8200 | ✅ Fonctionne | CPU actuellement, rebuild gfx1100 pending |
|
||
| **openedai-speech** | folzo-Corp | 8100 | ✅ Démarré | ROCm gfx1100, group_add 44+991 |
|
||
| **OpenWebUI** | effi-server | 3000 | ✅ Fonctionne | Pointé STT+TTS vers 192.168.1.11 |
|
||
| **wol-proxy** | effi-server | 3011 | ✅ Fonctionne | Proxy Ollama + WOL PC gaming |
|
||
| **n8n** | effi-server | 5678 | ✅ Running | |
|
||
| **qdrant** | effi-server | 6333 | ✅ Running | Vector store RAG |
|
||
| **pipelines** | effi-server | 9099 | ✅ Running | mem0 memory |
|
||
| **couchdb** | effi-server | 5984 | ✅ Running | Obsidian LiveSync |
|
||
| **mcpo** | effi-server | 8000 | ⚠️ Zombie détecté | Redémarré |
|
||
|
||
|
||
***
|
||
|
||
### 🔜 Prochaines Étapes
|
||
|
||
1. **Finaliser rebuild speaches gfx1100** → activer GPU sur Whisper large-v3
|
||
2. **Tester TTS ROCm** → vérifier que openedai-speech utilise bien la RX 7800 XT
|
||
3. **Mettre à jour l'URL TTS** dans OpenWebUI Admin → Audio → `http://192.168.1.11:8100`
|
||
4. **Réservations DHCP** sur le routeur pour fixer les IPs de façon permanente
|
||
5. **Tester pipeline vocal complet** : micro → STT folzo → OpenWebUI effi → LLM Ollama → TTS folzo → speaker
|
||
|
||
***
|
||
|
||
## 🎛️ Prompt Nouveau Chat
|
||
|
||
```
|
||
## Contexte infrastructure IA locale
|
||
|
||
### Machines
|
||
- folzo-Corp (192.168.1.11) : PC gaming, AMD RX 7800 XT (gfx1100), ROCm 6.3.4, Fedora/Ubuntu
|
||
- effi-server (192.168.1.27) : Serveur IA, CPU Intel 4 cores, 7.6GB RAM, Ubuntu 24.04
|
||
- PC gaming Ollama : LLM via WOL proxy
|
||
|
||
### Stack déployée
|
||
- OpenWebUI:3000 → effi-server
|
||
- speaches STT:8200 → folzo-Corp (speaches:rocm-ct2, Whisper large-v3, gfx1100, build CTranslate2-ROCm custom avec MIOpen)
|
||
- openedai-speech TTS:8100 → folzo-Corp (ROCm, group_add: 44+991)
|
||
- wol-proxy:3011 → effi-server (proxy TCP+WOL vers Ollama PC gaming)
|
||
- n8n:5678, qdrant:6333, pipelines:9099, couchdb:5984, mcpo:8000 → effi-server
|
||
|
||
### Configs importantes
|
||
- Dockerfile ROCm CTranslate2 : ~/speaches/src/Dockerfile.rocm-ct2
|
||
- Architecture : gfx1100 (RX 7800 XT)
|
||
- MIOpen : -DWITH_CUDNN=ON -DCUDnn_LIBRARY=/opt/rocm-6.3.4/lib/libMIOpen.so
|
||
- TTS : ~/openedai-speech/docker-compose.yml (group_add: "44","991")
|
||
- HSA_OVERRIDE_GFX_VERSION=11.0.0
|
||
|
||
### TODO en cours
|
||
- Rebuild speaches avec gfx1100 (sed fait, build en cours)
|
||
- Vérifier GPU actif sur TTS openedai-speech
|
||
- Tester pipeline vocal bout en bout
|
||
|
||
### Question
|
||
[INSÉRER ICI]
|
||
```
|
||
|
||
|
||
---
|
||
|
||
# et si tu devais donner un titre a ce thread ?
|
||
|
||
**"Migration Stack IA ROCm : CTranslate2 gfx1100 + Pipeline Vocal GPU sur RX 7800 XT"**
|
||
|
||
Ou en version plus courte :
|
||
|
||
**"Speaches + OpenedAI-Speech ROCm — folzo-Corp RX 7800 XT"**
|
||
|