Hugging Face

Modèles de décision ouverts multimodaux d1 pour l’edge

Aujourd’hui, nous publions deux modèles de décision ouverts dans notre famille de modèles de décision d1: d1-3B et d1-omni-600M (expérimental). Meilleur modèle de décision sous 10B sur le Decision In

Source de l’image · Hugging Face

Aujourd’hui, nous publions deux modèles de décision ouverts dans notre famille de modèles de décision d1: d1-3B et d1-omni-600M (expérimental).

  • Meilleur modèle de décision sous 10B sur le Decision Index 0.2.1 : d1-3B obtient 48.57, devant tous les modèles 4B et 9B et devant Decider 35B-A3B (47.11).
  • Multimodal : d1-3B prend en charge le texte et les images, tandis que d1-omni-600M prend en charge le texte et les images ou le texte et l’audio
  • Rapide : d1-3B répond à une question en 16 ms sur un NVIDIA Jetson AGX Thor, en 26 ms sur un Jetson AGX Orin et en 50 ms sur un Jetson Orin Nano

Comment nous avons construit des modèles de décision pour l’edge

Ces modèles de décision ouverts d1 sont construits sur nos Liquid Foundation Models (LFMs). Contrairement à nos modèles génératifs, les modèles de décision ne produisent pas de tokens mais répondent en une seule passe avant.

d1-3B et d1-omni-600M sont entraînés à partir de deux backbones très différents :

  • d1-3B est entraîné à partir de LFM2.5-VL-3B, notre dernier VLM, qui est de type decoder-only. Il accepte le texte et les images en entrée.
  • d1-omni-600M est entraîné à partir de LFM2.5-Encoder-350M, un encodeur bidirectionnel. Il ajoute des encodeurs de vision et d’audio pour gérer les trois modalités. Il accepte soit le texte et l’image, soit le texte et l’audio en entrée. Ce modèle fait actuellement l’objet d’une publication de recherche précoce et est en cours de développement supplémentaire.

Résultats des benchmarks

Nous avons évalué d1-3B et d1-omni-600M sur sept jeux de données publics couvrant la compréhension de lecture, la détection de toxicité, la classification d’intention, le QA médical et la compréhension multilingue. d1-3B obtient un score moyen de 82.9, le plus élevé du tableau et supérieur à Decider 4B. d1-omni-600M obtient 78.4, dépassant Decider 2B (77.1) avec seulement un quart des paramètres.

Benchmark d1-omni-600M d1-3B Decider 2B Decider 4B
SQuAD 2.0 74.0 83.3 67.7 76.0
Civil Comments 95.8 93.3 93.6 92.8
MASSIVE intent 86.1 86.9 81.1 88.3
PubMedQA 61.3 68.3 65.7 63.3
BoolQ 77.7 86.3 87.3 89.0
XNLI 74.7 85.6 85.0 88.6
PAWS-X 79.5 76.4 59.5 69.8
Moyenne 78.4 82.9 77.1 81.1

Nous avons validé que d1-3B conserve les capacités visuelles de son backbone LFM2.5-VL-3B sur des benchmarks de vision standards, et que d1-omni-600M gère les trois modalités. Nous ne rapportons aucun benchmark de vision ou d'audio, car le Decision Index v0.3 n'inclut qu'une division de vision privée et les benchmarks de décision audio constituent actuellement un problème ouvert.

Vitesse

En collaboration avec NVIDIA, nous avons évalué d1-3B sur la pile NVIDIA à travers le NVIDIA GeForce RTX 4090, le NVIDIA Jetson AGX Thor, le Jetson AGX Orin 64 GB et le Jetson Orin Nano. Comme d1-omni-600M est une version de recherche précoce, nous ne rapportons aucun chiffre de vitesse pour elle dans cette version.

Inférence en périphérie. d1-3B répond à une seule question en moins de 50 ms sur chaque appareil mesuré. Trois questions ne prennent que 1.3x le temps d'une seule, l'AGX Thor passant de 16 ms à 20 ms.

Une question 3 questions État de 3.4K tokens image 384px 64 états, compactés
Apple M5 Pro 30 ms 41 ms 640 ms 62 ms 78 / s
Jetson AGX Thor 16 ms 20 ms 220 ms 35 ms 262 / s
Jetson AGX Orin 64 GB 26 ms 35 ms 560 ms 83 ms 110 / s
Jetson Orin Nano 50 ms 73 ms 1,640 ms 202 ms 38 / s

Inférence GPU. Sur GPU, d1-3B répond à une question en moins de 10 ms et traite une image 384px en moins de 18 ms sur les deux plateformes.

Une question 3 questions État de 3.4K tokens image de 384px 64 états, compactés
NVIDIA RTX 4090 8 ms 21 ms 102 ms 17 ms 475 / s
AMD MI325X 9 ms 14 ms 44 ms 18 ms 1,106 / s

Comment utiliser les modèles de décision d1 open source

Optez pour les modèles de décision d1 lorsque vous avez besoin de décisions structurées et rapides, y compris avec des entrées multimodales. d1-3B offre la meilleure qualité de décision à sa taille, tandis que d1-omni-600M convient lorsque l'empreinte compte.

Installez les dépendances (nécessite transformers>=5.14):

pip install "transformers>=5.14" torch torchvision pillow

Ces modèles embarquent leur propre code, chargez-le donc avec trust_remote_code=True:

import io
import urllib.request

import torch
from PIL import Image
from transformers import AutoModel

device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
model = AutoModel.from_pretrained("LiquidAI/d1-3B", trust_remote_code=True,
                                  dtype=torch.float32 if device == "cpu" else torch.bfloat16).to(device)

# Several named questions over one text state, answered in one pass
questions = {
    "refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"},
    "team": {"type": "choice", "instructions": "Which team should handle this?",
             "criteria": {"billing": "Charges, refunds, invoices", "technical": "App or site faults",
                          "fraud": "Suspected unauthorised use"}},
    "urgency": {"type": "score", "instructions": "How urgent is this?",
                "criteria": ["Can wait", "Today", "Blocking the customer now"]},
}
print(model.system_one("I was charged twice this month, please refund one of them.", questions))

# An image as the whole state
url = "http://images.cocodataset.org/val2017/000000039769.jpg"  # two cats on a sofa
photo = Image.open(io.BytesIO(urllib.request.urlopen(url).read()))
print(model.system_one(None, {"cats": {"type": "choice", "instructions": "How many cats are there?",
                                       "criteria": {"one": "One", "two": "Two", "more": "Three or more"}}},
                       images=[photo]))

# Many requests, packed together with no padding
tickets = ["Where is my parcel? It was due Monday.", "The app crashes when I open settings."]
print(model.system_one_batch([(t, {"team": questions["team"]}) for t in tickets]))

Pour plus de concision, nous n'incluons que l'exemple pour d1-3B. Consultez la fiche du modèle d1-omni-600M pour obtenir les instructions permettant de l'exécuter.

Premiers pas avec les modèles de décision d1 open source

Les deux modèles de décision sont à poids ouverts et disponibles dès aujourd'hui sur Hugging Face :

Nous avons hâte de voir ce que vous allez construire.

Citation

Si vous utilisez ce travail, veuillez citer le billet de blog de la version :

@article{liquidAI2026opend1,
  author  = {Liquid AI},
  title   = {Open d1: Edge decision models for text, vision, and audio},
  journal = {Liquid AI Blog},
  year    = {2026},
  note    = {www.liquid.ai/blog/open-d1},
}
Source originale

Hugging Face

À propos du contenu

La publication originale et les droits appartiennent à la source.

Traduction automatique · Consultez l’original