À propos du projet
TensorFold est un serveur d'inférence local qui expose des modèles de langage via une API HTTP compatible OpenAI. Il cible deux backends : Apple Silicon via MLX et les GPU NVIDIA via CUDA. Chaque famille de modèles prise en charge embarque ses propres noyaux et sa logique de vérification des brouillons plutôt que de s'appuyer sur un chemin générique unique.
L'installation se fait depuis le dépôt Git avec pip, et la CLI fournit les commandes `serve`, `pull`, `models`, `info` et `update`. Un démarrage typique est `tensorfold serve <checkpoint>`, après quoi les clients pointent vers `http://127.0.0.1:8080/v1` et utilisent l'ID de modèle rapporté par `/v1/models`. Les complétions de chat, les complétions et l'API Responses sont toutes servies. Python 3.11+ est requis, ainsi que MLX 0.32.2+ sur macOS.
Le README liste un tableau des familles de modèles et des checkpoints pris en charge, notamment Nemotron 3.5 Lightning, Qwen3.8-27B, Qwen3.8 Flash Next, GLM-5.3-Flash, Gemma 4 26B-A4B, DeepSeek-V4-Flash et Ternary Bonsai 2 27B, avec des notes sur le backend et la méthode de brouillon utilisés par chacun. La prise en charge de la quantification varie selon la famille : Qwen3.8-27B lit les checkpoints MLX affine de 2 à 8 bits, y compris les formats de couches mixtes ; Flash Next nécessite des poids 4 bits/groupe-32 ; Nemotron CUDA nécessite 4 bits/groupe-64 plus une tête MTP ; GLM lit les conversions 4 bits/groupe-64 et en bits mixtes. Certains chemins CUDA acceptent les conversions NVFP4 ou EXL3, marquées expérimentales.
Une affirmation de conception centrale est le décodage exact : un brouillon spéculatif n'est accepté que lorsqu'il est égal au token que le même moteur produirait en série, avec un échantillonnage lié au prompt ou à la graine, à la position absolue et à l'ID de token. Le README précise explicitement que l'exactitude est relative au même moteur, aux mêmes poids, au même runtime et aux mêmes réglages, et n'implique pas une sortie identique entre MLX et CUDA, ni entre différentes quantifications ou différents nombres de rangs de parallélisme tensoriel. Les utilisateurs peuvent comparer une requête avec `"draft": false` pour vérifier la sortie brouillon par rapport à la sortie série.
Les options de service couvrent l'hôte/port, le nom de modèle annoncé, la taille de contexte, les limites de réponse, les valeurs d'échantillonnage par défaut, les bascules de réflexion et l'effort de raisonnement, la sélection du backend, le parallélisme, le contrôle du brouillon et, sur MLX, la mise en cache des prompts et le réglage de la mémoire tels que les préfixes retenus, le débordement sur disque, les répertoires d'instantanés et un cache de tampons réutilisable. Les options propres à CUDA incluent le dtype du cache KV pour Flash Next, un seuil de confiance MTP et une exécution en parallélisme tensoriel à deux rangs.
La gestion de la mémoire est documentée en détail : MLX utilise par défaut un budget de 70 % de la RAM du processus, modifiable via une variable d'environnement, avec une admission tenant compte des poids, de la croissance du cache, des tokens de réponse et de l'espace de travail de préremplissage. Un tableau des classes de mémoire liste des créneaux de qualification de 32 Go à 256 Go, mais la plupart des cellules sont marquées TBD ; seule une ligne 64 Go M5 Pro dispose de chiffres publiés, attribués à une exécution communautaire sur une version antérieure. Le README indique qu'il s'agit de créneaux de qualification, et non de promesses de mémoire minimale.
La mise en cache des prompts sur MLX utilise des plans de blocs dérivés de la séquence de tokens rendue, avec des points de reprise aux débuts des messages assistant et au début du deuxième message. Les instantanés portent l'identité du modèle, du runtime, du noyau et du plan de blocs afin que les préfixes puissent survivre aux redémarrages. Les moteurs CUDA conservent leur propre état de prompt et de réponse et n'utilisent pas les options MLX d'instantané disque ou de préfixes retenus.
Pour le matériel NVIDIA, le README recommande le conteneur PyTorch de NVIDIA, car le paquet n'a pas d'extra d'installation CUDA. Qwen3.8-27B, Flash Next et Nemotron prennent en charge un ou deux rangs CUDA, tandis que GLM en nécessite deux. Le rang 0 sert le HTTP.
L'entrée vision est opt-in : installer l'extra vision et démarrer un checkpoint dense Qwen3.5/3.8 compatible avec `--vision` permet des parties de contenu image et texte via le même moteur. Le projet est sous licence MIT, les poids des modèles conservant leurs propres licences et certains checkpoints de brouillon optionnels portant des conditions non commerciales indiquées dans les avis tiers.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.