lattepanda-sigma2-npu-qwen-inference-6.ino
Loads the pre-installed LLM on the Intel Arc NPU for fast, local inference.
Hardware: LattePanda Sigma 2 with Intel Arc B390 NPU. Software: Ubuntu 26.04, Python 3.10+, libraries optimum-intel, transformers. The Qwen3.6-35B-A3B model must be accessible via HF Hub or locally. Execution targets the 'NPU' device to maximize the 50 TOPS performance. Ensure OpenVINO drivers are up to date.
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")