Transformers documentation
Filosofía
Filosofía
Transformers es una biblioteca centrada en PyTorch. Ofrece modelos fieles a sus artículos, fáciles de usar y fáciles de modificar.
Se encuentra disponible un artículo más extenso y detallado, con ejemplos, visualizaciones y cronologías, aquí como nuestra referencia canónica.
Nuestra filosofía evoluciona a través de la práctica. A continuación se presentan nuestros principios actuales y estables.
Para quién está destinada esta biblioteca
- Investigadores y educadores que exploran o extienden arquitecturas de modelos.
- Practicantes que ajustan, evalúan o sirven modelos.
- Ingenieros que desean un modelo preentrenado que “simplemente funcione” con una API predecible.
Lo que puedes esperar
Cada modelo requiere tres clases principales: configuration, models y una clase de preprocesamiento. Tokenizers gestionan el NLP, image processors gestionan imágenes, video processors gestionan vídeos, feature extractors gestionan audio y processors gestionan entradas multimodales.
Todas estas clases se pueden inicializar de forma simple y unificada a partir de instancias preentrenadas mediante un método común
from_pretrained()que descarga (si es necesario), almacena en caché y carga la instancia de la clase relacionada y los datos asociados (hiperparámetros de las configuraciones, vocabulario de los tokenizadores, parámetros de los procesadores y pesos de los modelos) desde un punto de control preentrenado proporcionado en Hugging Face Hub o desde un punto de control guardado por usted.Sobre esas tres clases base, la biblioteca ofrece dos APIs: pipeline() para usar rápidamente un modelo para inferencia en una tarea dada y Trainer para entrenar o afinar rápidamente un modelo de PyTorch.
Principios fundamentales
Los siguientes principios se consolidaron con el tiempo y se detallan en nuestra nueva publicación de blog sobre la filosofía blog post. Guían las decisiones de los mantenedores al revisar PRs y contribuciones.
- Fuente de verdad. Las implementaciones deben ser fieles a los resultados oficiales y al comportamiento previsto.
- Un modelo, un archivo. La lógica central de inferencia/entrenamiento es visible de principio a fin en el archivo del modelo que leen los usuarios.
- El código es el producto. Optimiza para la lectura y la comparación de diferencias. Prefiere nombres explícitos a la indirección ingeniosa.
- Estándariza, no abstraigas. Mantén el comportamiento específico del modelo en el modelo. Usa interfaces compartidas solo para infraestructura genérica.
- DRY* (Repetir cuando ayude a los usuarios). Los archivos de modelado para el usuario final siguen siendo autocontenidos. La infraestructura se extrae por separado.
- API de usuario mínima. Pocos caminos de código, kwargs predecibles, métodos estables.
- Compatibilidad hacia atrás. Las interfaces públicas no deben romperse. Los artefactos antiguos del Hub deben seguir funcionando.
- Superficie pública coherente. La nomenclatura, las salidas y los diagnósticos opcionales están alineados y probados.
Clases principales
Las clases de configuración almacenan los hiperparámetros necesarios para construir un modelo. Entre ellos se incluyen el número de capas y el tamaño oculto. No siempre es necesario instanciarlos manualmente. Al utilizar un modelo preentrenado sin modificaciones, la creación del modelo instancia automáticamente la configuración.
Las clases de modelos son modelos de PyTorch (torch.nn.Module), envueltos al menos por un PreTrainedModel.
Transformers modulares. Los colaboradores escriben un fragmento
modular_*.pyque declara la reutilización de componentes existentes. La biblioteca expande automáticamente este fragmento en el archivo visiblemodeling_*.pyque los usuarios leen y depuran. Los mantenedores revisan el fragmento; los usuarios modifican el archivo expandido. Esto preserva el principio de «un modelo, un archivo» sin deriva de código repetitivo. Consulte la documentación de contribución para obtener más información.Las clases de preprocesamiento convierten los datos crudos en un formato aceptado por el modelo. Un tokenizer almacena el vocabulario de cada modelo y proporciona métodos para codificar y decodificar cadenas en una lista de índices de embeddings de tokens. Los procesadores de imágenes preprocesan entradas visuales, los procesadores de video preprocesan entradas de video, los extractores de características preprocesan entradas de audio y los procesadores preprocesan entradas multimodales.
Todas estas clases pueden instanciarse a partir de instancias preentrenadas, guardarse localmente y compartirse en el Hub mediante tres métodos:
from_pretrained()permite instanciar un modelo, una configuración y una clase de preprocesamiento a partir de una versión preentrenada, ya sea proporcionada por la propia biblioteca (los modelos compatibles se encuentran en el Model Hub) o almacenada localmente (o en un servidor) por el usuario.save_pretrained()permite guardar un modelo, su configuración y la clase de preprocesamiento de forma local para que pueda recargarse mediantefrom_pretrained().push_to_hub()te permite compartir un modelo, una configuración y una clase de preprocesamiento en el Hub, para que sea fácilmente accesible para todos.