12 KiB
requirements-dgx-aarch64.txt — DRAFT pour relecture Codex/Dom
Statut : DRAFT — pas encore appliqué. Aucun changement au requirements.txt réel.
Date : 2026-06-01
Cible : DGX Spark, Ubuntu 24.04 ARM64, CUDA 13 système, GB10 (sm_121), container Docker headless serveur.
Source de vérité : docs/POC/PORTAGE_DGX_SPARK_2026-05-28.md §5.
Base : requirements.txt actuel = 180 paquets — bench x86 venv_v3/.
Règles appliquées
- PyTorch :
torch,torchvisiondésépinglés, installés via--index-url https://download.pytorch.org/whl/cu128(binaire sm_120 compat sm_121). - Wheels GPU NVIDIA (
nvidia-*-cu12, 15 paquets) : supprimés, tirés transitivement par torch cu128 ARM. - Capture / GUI / X11 : supprimés — container serveur headless ; l'agent capture tourne sur poste Linux client séparé.
onnx==1.20.1: supprimé (audit dépendances : fantôme transitif).- Reste : wheels neutres ARM/CPU gardés tels quels ; wheels torch-dependent désépinglés pour laisser pip résoudre.
1. GARDÉ TEL QUEL (paquets neutres ARM/CPU)
Wheels pur Python ou wheels manylinux2014_aarch64 / musllinux_aarch64 publiés sur PyPI. §5 RAS pour les binaires explicitement listés.
- Web/API :
fastapi,Flask,Flask-Caching,Flask-Cors,Flask-Migrate,Flask-SocketIO,Flask-SQLAlchemy,starlette,uvicorn,uvloop(§5),httptools,httpcore,httpx,h11,websockets,wsproto,simple-websocket,python-engineio,python-socketio,python-multipart,Werkzeug,Jinja2,itsdangerous,blinker,click,MarkupSafe,cachelib,watchfiles,anyio,bidict - DB/migrations :
SQLAlchemy,alembic,Mako,greenlet,redis - ML/vision CPU :
faiss-cpu(§5),opencv-python(§5),pillow,numpy,scipy,scikit-learn,matplotlib,contourpy,fonttools,kiwisolver,cycler,pyparsing,ml_dtypes,networkx,sympy,mpmath,joblib,threadpoolctl,RapidFuzz,shapely(§5),pyclipper(§5),h5py(§5) - PDF/docs :
pypdfium2(§5),lxml(§5),python-docx,openpyxl,et_xmlfile,defusedxml,anyascii,langdetect,ftfy,wcwidth,regex - Ollama :
ollama(client HTTP pur Python) - Validation/config :
pydantic,pydantic_core,annotated-doc,annotated-types,typing-inspection,typing_extensions,validators,marshmallow,jsonschema,jsonschema-specifications,referencing,rpds-py,attrs,PyYAML,python-dotenv - HTTP/réseau :
aiohttp,aiohappyeyeballs,aiosignal,frozenlist,multidict,propcache,yarl,requests,urllib3,charset-normalizer,idna,certifi - Crypto/utils :
cryptography,cffi,pycparser,filelock,fsspec,packaging,platformdirs,pathspec,six,python-dateutil,sortedcontainers,tqdm,Pygments - Monitoring :
prometheus_client,psutil,pynvml,nvidia-ml-py(bindings NVML pur Python, pas un wheel CUDA toolkit) - Protobuf :
protobuf(§5) - Dev/tests :
pytest,pytest-asyncio,pytest-cov,pytest-flask,pytest-mock,hypothesis,coverage,iniconfig,pluggy,black,flake8,mypy,mypy_extensions,mccabe,pycodestyle,pyflakes
2. GARDÉ MAIS DÉSÉPINGLÉ (laisser pip résoudre avec torch cu128 ARM)
| Paquet | Version actuelle x86 | Raison |
|---|---|---|
torch |
2.9.1 |
installé via index PyTorch cu128 ARM (étape 1 ci-dessous) |
torchvision |
0.24.1 |
idem, doit matcher torch cu128 ARM |
transformers |
4.57.3 |
dépend de torch — laisser résoudre |
accelerate |
1.13.0 |
dépend de torch |
timm |
1.0.24 |
dépend de torch |
open_clip_torch |
3.2.0 |
dépend de torch |
python-doctr |
1.0.1 |
dépend de torch + torchvision (§5 RAS) |
safetensors |
0.7.0 |
binding Rust, couplé à transformers/torch |
tokenizers |
0.22.2 |
binding Rust, couplé à transformers |
huggingface-hub |
0.36.0 |
couplé à transformers |
hf-xet |
1.2.0 |
binding Rust, wheel aarch64 à vérifier (cf. §4) |
3. SUPPRIMÉ
3a. Capture / GUI / X11 (serveur DGX headless)
PyQt5, PyQt5-Qt5, PyQt5_sip, mss, PyAutoGUI, pynput, evdev, python-xlib, python3-xlib, pystray, PyGetWindow, PyMsgBox, PyScreeze, MouseInfo, pyperclip, pytweening, PyRect — tous hors scope container serveur (§5 ligne 81 : non bloquant si non chargés). Restent sur le poste Linux client de l'agent capture.
3b. Wheels GPU NVIDIA épinglées x86 (15 paquets)
nvidia-cublas-cu12, nvidia-cuda-cupti-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-runtime-cu12, nvidia-cudnn-cu12, nvidia-cufft-cu12, nvidia-cufile-cu12, nvidia-curand-cu12, nvidia-cusolver-cu12, nvidia-cusparse-cu12, nvidia-cusparselt-cu12, nvidia-nccl-cu12, nvidia-nvjitlink-cu12, nvidia-nvshmem-cu12, nvidia-nvtx-cu12 — §5 ligne 78 : désépinglés, retirés du requirements, tirés par torch cu128 ARM.
3c. Fantôme
onnx==1.20.1 — audit runtime : non importé par le code server. onnxruntime déjà confirmé non utilisé (cf. brief Dom). Suppression nette.
4. À VÉRIFIER (validation Codex/Dom requise)
| Paquet | Question | Action proposée |
|---|---|---|
triton |
§5 risque ligne 79 : PTXAS embarqué peut crasher avec CUDA 13 | Non listé (tiré par torch cu128) ; si KO au runtime : export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas |
hf-xet |
Wheel aarch64 publié au moment du build ? | Désépingler ; si non dispo, retirer (dep optionnelle de huggingface-hub) |
accelerate |
Version compatible torch cu128 ARM ? | Désépinglé (cat. 2) — flag pour test post-install |
onnx (suppression) |
Confirmé sur scope server/ + core/grounding/ + core/detection/ ? | grep -r "^import onnx|^from onnx" --include='*.py' server/ core/ avant build |
nvidia-ml-py vs pynvml |
Doublon (officiel vs fork tiers) | Probable retrait de pynvml, à arbitrer |
5. Bloc requirements-dgx-aarch64.txt proposé
Installation en 2 étapes (cu128 ARM avant le reste, sinon pip tire les wheels x86 du cache) :
# Étape 1 : PyTorch ARM cu128
pip install --no-cache-dir torch torchvision \
--index-url https://download.pytorch.org/whl/cu128
# Étape 2 : reste
pip install --no-cache-dir -r requirements-dgx-aarch64.txt
# requirements-dgx-aarch64.txt
# Cible : DGX Spark / Ubuntu 24.04 ARM64 / CUDA 13 / GB10 sm_121
# Pré-requis : torch+torchvision installés via index cu128 ARM AVANT ce fichier.
# --- Stack torch-dependent (désépinglé) ---
transformers
accelerate
timm
open_clip_torch
python-doctr
safetensors
tokenizers
huggingface-hub
hf-xet
# --- Web / API ---
fastapi==0.128.0
Flask==3.0.0
Flask-Caching==2.1.0
Flask-Cors==4.0.0
Flask-Migrate==4.1.0
Flask-SocketIO==5.3.5
Flask-SQLAlchemy==3.1.1
starlette==0.50.0
uvicorn==0.40.0
uvloop==0.22.1
httptools==0.7.1
httpcore==1.0.9
httpx==0.28.1
h11==0.16.0
websockets==16.0
wsproto==1.3.2
simple-websocket==1.1.0
python-engineio==4.8.0
python-socketio==5.10.0
python-multipart==0.0.21
Werkzeug==3.1.5
Jinja2==3.1.6
itsdangerous==2.2.0
blinker==1.9.0
click==8.3.1
MarkupSafe==3.0.3
cachelib==0.9.0
watchfiles==1.1.1
anyio==4.12.1
bidict==0.23.1
# --- DB / migrations ---
SQLAlchemy==2.0.23
alembic==1.18.4
Mako==1.3.10
greenlet==3.3.0
redis==5.0.1
# --- ML / vision CPU ---
faiss-cpu==1.13.2
opencv-python==4.12.0.88
pillow==12.1.0
numpy==2.2.6
scipy==1.17.0
scikit-learn==1.8.0
matplotlib==3.10.8
contourpy==1.3.3
fonttools==4.62.1
kiwisolver==1.5.0
cycler==0.12.1
pyparsing==3.3.2
ml_dtypes==0.5.4
networkx==3.6.1
sympy==1.14.0
mpmath==1.3.0
joblib==1.5.3
threadpoolctl==3.6.0
RapidFuzz==3.14.3
shapely==2.1.2
pyclipper==1.4.0
h5py==3.16.0
# --- PDF / docs ---
pypdfium2==5.6.0
lxml==6.0.2
python-docx==1.2.0
openpyxl==3.1.5
et_xmlfile==2.0.0
defusedxml==0.7.1
anyascii==0.3.3
langdetect==1.0.9
ftfy==6.3.1
wcwidth==0.2.14
regex==2025.11.3
# --- Ollama ---
ollama==0.6.1
# --- Validation / config ---
pydantic==2.12.5
pydantic_core==2.41.5
annotated-doc==0.0.4
annotated-types==0.7.0
typing-inspection==0.4.2
typing_extensions==4.15.0
validators==0.35.0
marshmallow==3.20.1
jsonschema==4.20.0
jsonschema-specifications==2025.9.1
referencing==0.37.0
rpds-py==0.30.0
attrs==25.4.0
PyYAML==6.0.1
python-dotenv==1.0.0
# --- HTTP / réseau ---
aiohttp==3.13.3
aiohappyeyeballs==2.6.1
aiosignal==1.4.0
frozenlist==1.8.0
multidict==6.7.0
propcache==0.4.1
yarl==1.22.0
requests==2.32.5
urllib3==2.6.3
charset-normalizer==3.4.4
idna==3.11
certifi==2026.1.4
# --- Crypto / utils ---
cryptography==46.0.3
cffi==2.0.0
pycparser==2.23
filelock==3.20.3
fsspec==2026.1.0
packaging==25.0
platformdirs==4.5.1
pathspec==1.0.3
six==1.17.0
python-dateutil==2.8.2
sortedcontainers==2.4.0
tqdm==4.67.1
Pygments==2.19.2
# --- Monitoring ---
prometheus_client==0.23.1
psutil==7.2.1
pynvml==13.0.1
nvidia-ml-py==13.590.48
# --- Protobuf ---
protobuf==7.34.0
# --- Dev / tests (à isoler dans requirements-dev.txt à terme) ---
pytest==9.0.2
pytest-asyncio==1.3.0
pytest-cov==4.1.0
pytest-flask==1.3.0
pytest-mock==3.12.0
hypothesis==6.92.1
coverage==7.13.1
iniconfig==2.3.0
pluggy==1.6.0
black==23.12.1
flake8==6.1.0
mypy==1.7.1
mypy_extensions==1.1.0
mccabe==0.7.0
pycodestyle==2.11.1
pyflakes==3.1.0
Bilan : 180 → ~125 lignes. Retraits = 17 capture/GUI + 15 nvidia-cu12 + 1 onnx + 11 remontés cat. 2 désépinglée (torch/torchvision/transformers/accelerate/timm/open_clip_torch/python-doctr/safetensors/tokenizers/huggingface-hub/hf-xet) = 44 lignes en moins, 9 désépinglées remontées en tête.
6. Vérifications post-install sur DGX
# 1. PyTorch + GPU sm_121
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_capability(0))"
# attendu : (True, (12, 1))
python -c "import torch; print(torch.__version__, torch.version.cuda)"
# attendu : 2.9.x+ / 12.8
# 2. FAISS
python -c "import faiss; print(faiss.__version__)"
# attendu : 1.13.x
# 3. Transformers stack
python -c "import transformers; print(transformers.__version__)"
python -c "import accelerate, timm, open_clip, doctr; print(accelerate.__version__, timm.__version__, open_clip.__version__, doctr.__version__)"
# 4. Bindings Rust aarch64
python -c "import tokenizers, safetensors; print(tokenizers.__version__, safetensors.__version__)"
python -c "import hf_xet; print(hf_xet.__version__)" # point de vérif cat. 4
# 5. Confirmation onnx absent et runtime OK
python -c "import onnx" 2>&1 | grep -q ModuleNotFoundError && echo "OK : onnx absent"
# 6. Points d'entrée applicatifs
python -c "from web_dashboard.app import app; print('dashboard OK')"
python -c "from visual_workflow_builder.backend.app import app; print('VWB backend OK')"
# adapter le module server selon le wiring réel
# 7. Sanity GPU
python -c "import torch; x=torch.randn(8,8,device='cuda'); print('matmul GPU OK', (x@x).device)"
# 8. Ollama client → daemon
python -c "import ollama; print(ollama.list())"
Garde-fous §5 :
- Si kernels Triton crashent :
export TRITON_PTXAS_PATH=/usr/local/cuda/bin/ptxas. - Si pip tire encore des
nvidia-*-cu12x86 : confirmer que l'étape 1 (torch cu128 ARM) a été exécutée avant, et que--no-cache-direst bien passé.
7. Points ouverts pour Codex/Dom
- Confirmer suppression
onnx:grep -r "^import onnx\|^from onnx" --include='*.py' server/ core/avant build image Docker. - Splitter dès le POC
requirements-dev.txt(pytest/black/mypy/flake8/coverage/hypothesis) pour ne pas polluer l'image server ? À trancher. hf-xet: si wheel aarch64 indispo au build, retirer (dep optionnellehuggingface-hub).nvidia-ml-pyvspynvml: doublon. Garder uniquementnvidia-ml-py(officiel) ?