Configuración del entorno y preparación del proyecto
Para comenzar, clona el repositorio localmente utilizando el siguiente comando:
git clone https://gitcode.com/hf_mirrors/PyTorch-NPU/t5_small
cd t5_small
A continuación, instala las dependencias necesarias a partir del archivo examples/requirements.txt:
pip install -r examples/requirements.txt
Este paso incluye bibliotecas clave como transformers, torch (recomendado en versión 2.1.0), y scipy, que son esenciales para ejecutar el modelo correctamente.
Estructura del modelo: componentes fundamentales de t5_small
El modelo t5_small se basa en el marco Text-to-Text Transfer Transformer, convirtiendo todas las tareas de procesamiento de lenguaje natural (NLP) en problemas de generación de texto. Los archivos principales incluyen:
- Modelo en PyTorch:
pytorch_model.bin - Modelo en Flax:
flax_model.msgpack - Modelo en TensorFlow:
tf_model.h5 - Formato ONNX: ubicado en la carpeta
onnx/, con versiones cuantizadas y optimizadas
Los archivos spiece.model y tokenizer.json proporcionan la configuración del tokenizador, asegurando una correcta preprocesamiento de los textos de entrada.
Ejecución rápida: primer ejemplo de inferencia
El script examples/inference.py permite probar rápdiamente el modelo. A continuación, un ejemplo simplificado para traducción inglés-francés:
import torch
from openmind import pipeline, is_torch_npu_available
# Detectar dispositivo disponible
device = "npu:0" if is_torch_npu_available() else "cpu"
# Crear pipeline de traducción
translator = pipeline("translation", model="PyTorch-NPU/t5_small", framework="pt", device=device)
# Realizar inferencia
result = translator("translate English to French: Her name is Sarsh and she lives in London.")
print(result)
Ejecuta el script directamente:
python examples/inference.py
La salida esperada será algo como:
[{'translation_text': 'Son nom est Sarsh et elle vit à Londres.'}]
Aplicaciones avanzadas: personalización y ajuste de parámetros
Puedes cargar el modelo y el tokenizador manualmente para mayor control sobre el proceso de inferencia:
from openmind import AutoTokenizer
from transformers import T5ForConditionalGeneration
device = "npu:0" # o "cpu"
model_path = "PyTorch-NPU/t5_small"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = T5ForConditionalGeneration.from_pretrained(model_path).to(device)
input_text = "translate English to German: Hugging Face is a technology company"
inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=40, num_beams=4, early_stopping=True)
print(tokenizer.decode(outputs[0]))
Parámetros clave para mejorar la salida:
max_length: longitud máxima del texto generadonum_beams: número de caminos de búsqueda (afecta calidad y diversidad)temperature: controla la aleatoriedad en la generación (mayor valor = más variabilidad)
Implementación en producción: uso de ONNX y optimización
El proyecto incluye modelos exportados a formato ONNX, ideal para despliegues eficientes:
onnx/encoder_model.onnx: modelo del encoderonnx/decoder_model.onnx: modelo del decoderonnx/decoder_model_quantized.onnx: versión cuantizada del decoder
Los modelos cuantizados reducen significativamente el uso de memoria y aceleran la inferencia, siendo especialmente útiles en entornos con recursos limitados.