philosophy.md 5.53 KB
Newer Older
1
2
3
4
5
6
7
8
9
<!--Copyright 2020 de The HuggingFace Team. Todos los derechos reservados

Con licencia bajo la Licencia Apache, Versi贸n 2.0 (la "Licencia"); No puedes usar este archivo excepto de conformidad con la Licencia.
Puedes obtener una copia de la Licencia en

http://www.apache.org/licenses/LICENSE-2.0

Al menos que sea requrido por la ley aplicable o acordado por escrito, el software distribuido bajo la Licencia es distribuido sobre una BASE "AS IS", SIN GARANTIAS O CONDICIONES DE
NING脷N TIPO. Ver la Licencia para el idioma espec铆fico que rige los permisos y limitaciones bajo la Licencia.
10
11
12
13

鈿狅笍 Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be
rendered properly in your Markdown viewer.

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
-->

# Filosof铆a

馃 Transformers es una biblioteca construida para:

- Los investigadores y educadores de NLP que busquen usar/estudiar/extender modelos transformers a gran escala 
- Profesionales que quieren optimizar esos modelos y/o ponerlos en producci贸n 
- Ingenieros que solo quieren descargar un modelo preentrenado y usarlo para resolver una tarea NLP dada. 

La biblioteca fue dise帽ada con dos fuertes objetivos en mente:

- Que sea tan f谩cil y r谩pida de utilizar como sea posible:

  - Hemos limitado enormemente el n煤mero de abstracciones que el usuario tiene que aprender. De hecho, no hay casi abstracciones,
    solo tres clases est谩ndar necesarias para usar cada modelo: [configuration](main_classes/configuration),
    [models](main_classes/model) y [tokenizer](main_classes/tokenizer).
  - Todas estas clases pueden ser inicializadas de forma simple y unificada a partir de ejemplos pre-entrenados mediante el uso de un m茅todo
    `from_pretrained()` com煤n de solicitud que se encargar谩 de descargar (si es necesario), almacenar y cargar la solicitud de clase relacionada y datos asociados
    (configurations' hyper-parameters, tokenizers' vocabulary, and models' weights) a partir de un control pre-entrenado proporcionado en
    [Hugging Face Hub](https://huggingface.co/models) o de tu propio control guardado.
  - Por encima de esas tres clases est谩ndar, la biblioteca proporciona dos APIs: [`pipeline`] para usar r谩pidamente un modelo (junto a su configuracion y tokenizer asociados)
    sobre una tarea dada, y [`Trainer`]/`Keras.fit` para entrenar u optimizar de forma r谩pida un modelo dado.
  - Como consecuencia, esta biblioteca NO es una caja de herramientas modular de bloques individuales para redes neuronales. Si quieres extender/construir sobre la biblioteca,
    usa simplemente los m贸dulos regulares de Python/PyTorch/TensorFlow/Keras y emplea las clases est谩ndar de la biblioteca como punto de partida para reutilizar funcionalidades
    tales como abrir/guardar modelo.
    
- Proporciona modelos modernos con rendimientos lo m谩s parecido posible a los modelos originales:

  - Proporcionamos al menos un ejemplo para cada arquitectura que reproduce un resultado proporcionado por los autores de dicha arquitectura.
  - El c贸digo normalmente es parecido al c贸digo base original, lo cual significa que alg煤n c贸digo Pytorch puede no ser tan 
    *pytorchic* como podr铆a ser por haber sido convertido a c贸digo TensorFlow, y viceversa. 

Unos cuantos objetivos adicionales:

- Exponer las caracter铆sticas internas de los modelos de la forma m谩s coherente posible:

  - Damos acceso, mediante una sola API, a todos los estados ocultos y pesos de atenci贸n.
  - Tokenizer y el modelo de API base est谩n estandarizados para cambiar f谩cilmente entre modelos.

- Incorporar una selecci贸n subjetiva de herramientas de gran potencial para la optimizaci贸n/investigaci贸n de estos modelos:

  - Una forma sencilla/coherente de a帽adir nuevos tokens al vocabulario e incrustraciones (embeddings, en ingl茅s) para optimizaci贸n.
  - Formas sencillas de camuflar y reducir "transformer heads".

- Cambiar f谩cilmente entre PyTorch y TensorFlow 2.0, permitiendo el entrenamiento usando un marco y la inferencia usando otro.

## Conceptos principales 

La biblioteca est谩 construida alrededor de tres tipos de clases para cada modelo:

- **Model classes** como [`BertModel`], que consisten en m谩s de 30 modelos PyTorch ([torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)) o modelos Keras ([tf.keras.Model](https://www.tensorflow.org/api_docs/python/tf/keras/Model)) que funcionan con pesos pre-entrenados proporcionados en la
  biblioteca.
- **Configuration classes** como [`BertConfig`], que almacena todos los par谩metros necesarios para construir un modelo. 
  No siempre tienes que generarla tu. En particular, si estas usando un modelo pre-entrenado sin ninguna modificaci贸n,
  la creaci贸n del modelo se encargar谩 autom谩ticamente de generar la configuraci贸n (que es parte del modelo).
- **Tokenizer classes** como [`BertTokenizer`], que almacena el vocabulario para cada modelo y proporciona m茅todos para
  codificar/decodificar strings en una lista de 铆ndices de "token embeddings" para ser empleados en un modelo.          

Todas estas clases pueden ser generadas a partir de ejemplos pre-entrenados, y guardados localmente usando dos m茅todos:

- `from_pretrained()` permite generar un modelo/configuraci贸n/tokenizer a partir de una versi贸n pre-entrenada proporcionada ya sea por
  la propia biblioteca (los modelos compatibles se pueden encontrar en [Model Hub](https://huggingface.co/models)) o
  guardados localmente (o en un servidor) por el usuario. 
- `save_pretrained()` permite guardar un modelo/configuraci贸n/tokenizer localmente, de forma que puede ser empleado de nuevo usando
  `from_pretrained()`.