lattepanda-sigma2-npu-qwen-inference-6.ino

LattePanda Sigma 2 : Serveur monocarte Intel Core Ultra X7 358H · Fichier : lattepanda-sigma2-npu-qwen-inference-6.ino · Langage : Python · Usage : Exécuter une inférence locale sur le modèle Qwen3.6-35B-A3B via le NPU pour démontrer la puissance de 50 TOPS.

Charge le modèle LLM préinstallé sur le NPU Intel Arc pour réaliser une inférence rapide et locale.

Matériel : LattePanda Sigma 2 avec NPU Intel Arc B390. Logiciel : Ubuntu 26.04, Python 3.10+, libraries optimum-intel, transformers. Le modèle Qwen3.6-35B-A3B doit être accessible via HF Hub ou local. L'exécution cible le device 'NPU' pour maximiser les 50 TOPS. Assurez-vous que les pilotes OpenVINO sont à jour.

lattepanda-sigma2-npu-qwen-inference-6.ino

import time
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from optimum.intel import OVModelForCausalLM

# Configuration pour le NPU Intel (OpenVINO)
# Le modèle est préchargé dans OVMS mais on peut aussi le charger directement si l'environnement le permet
# Ici, on utilise l'API OpenVINO via HuggingFace Optimum pour cibler le NPU

model_id = "Qwen/Qwen3.6-35B-A3B" # Nom théorique basé sur la description
print("Chargement du tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)

print("Chargement du modèle sur le NPU (device='NPU')...")
# Note : Pour les modèles quantifiés 4-bit/8-bit compatibles NPU
model = OVModelForCausalLM.from_pretrained(
    model_id,
    device='NPU',
    trust_remote_code=True,
    compile=True,
    ov_config={'PERFORMANCE_HINT': 'LATENCY'}
)

prompt = "Explique en une phrase ce qu'est un NPU." 
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

start_time = time.time()
outputs = model.generate(**inputs, max_new_tokens=50)
end_time = time.time()

decoded_output = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Réponse: {decoded_output}")
print(f"Temps d'inférence: {end_time - start_time:.2f} secondes")

← Retour à la fiche