
Bienvenido a la Biblioteca NLP Transfer, un marco construido sobre Pytorch para promover la experimentación y el aprendizaje de transferencia en PNL en PNL
Puede tener una descripción general de la API de alto nivel en este cuaderno Colab, que muestra cómo usar el marco en varios ejemplos. ¡Todos los ejemplos basados en DL en estos cuadernos incrustan el monitoreo de capacitación en la placa tensorial en células!
Para obtener un ejemplo de Finetuning de modelo previamente capacitado, proporcionamos un breve tutorial ejecutable sobre BertClassifier Finetuning en este cuaderno Colab
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
Para usar la transferencia NLP como biblioteca:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
o
pip install git+https://github.com/feedly/transfer-nlp.git
Para obtener el último estado antes de los nuevos lanzamientos.
Para usar la PNL de transferencia con ejemplos asociados:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
La documentación de la API y una descripción general de la biblioteca se pueden encontrar aquí
El núcleo de la biblioteca está hecho de un constructor de experimentos: define los diferentes objetos que su experimento necesita, y el cargador de configuración los construye de una manera agradable. Para la investigación reproducible y los estudios de ablación fáciles, la biblioteca luego aplica el uso de archivos de configuración para experimentos. Como las personas tienen diferentes gustos para lo que constituye un buen archivo de experimento, la biblioteca permite experimentos definidos en varios formatos:
En Transfer-NLP, un archivo de configuración del experimento contiene toda la información necesaria para definir completamente el experimento. Aquí es donde insertará nombres de los diferentes componentes que usará su experimento, junto con los hiperparámetros que desea usar. Transfer-NLP utiliza la inversión del patrón de control, que le permite definir cualquier clase / método / función que pueda necesitar, la clase ExperimentConfig creará una DictionNary e instalará sus objetos en consecuencia.
Para usar sus propias clases dentro de Transfer-NP, debe registrarlas usando el decorador @register_plugin . En lugar de utilizar un registro diferente para cada tipo de componente (modelos, cargadores de datos, vectorizadores, optimizadores, ...), solo se usa un solo registro aquí, para hacer cumplir la personalización total.
Si usa NLP Transfer NLP solo como una dependencia de Dev, es posible que desee usarla solo de manera declarativa, y llame register_plugin() en los objetos que desea usar en el tiempo de ejecución del experimento.
Aquí hay un ejemplo de cómo puede definir un experimento en un archivo YAML:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
Cualquier objeto se puede definir a través de una clase, método o función, dados los parámetros _name seguidos de sus propios parámetros. Luego se cargan e instancian los experimentos usando ExperimentConfig(experiment=experiment_path_or_dict)
Algunas consideraciones:
Los parámetros predeterminados se pueden omitir en el archivo de experimento.
Si se usa un objeto en diferentes lugares, puede consultarlo utilizando el símbolo $ , por ejemplo, aquí el objeto trainer usa el data_loader instanciado en otro lugar. No se requiere orden de objetos.
Para las rutas, es posible que desee utilizar las variables de entorno para que otras máquinas también puedan ejecutar sus experimentos. En el ejemplo anterior, ejecutaría EG ExperimentConfig(experiment=yaml_path, HOME=Path.home()) para instanciar el experimento y reemplazar $HOME por su ruta de hogar de la máquina.
La instancia de configuración permite cualquier configuración compleja con dict / lista anidada
Puede echar un vistazo a las pruebas para ver ejemplos de configuraciones de experimentos que el cargador de configuración puede construir. Además, proporcionamos experimentos ejecutables en experiments/ .
Para los experimentos de aprendizaje profundo, proporcionamos un BaseIgniteTrainer en transfer_nlp.plugins.trainers.py . Este entrenador básico tomará un modelo y algunos datos como entrada, y ejecutará una tubería de entrenamiento completa. Hacemos uso de la biblioteca Pytorch-INGITE para monitorear los eventos durante la capacitación (registrar algunas métricas, manipular las tasas de aprendizaje, los modelos de puntos de control, etc.). Los registros de Tensorboard también se incluyen como una opción, deberá especificar una ruta de parámetros simples tensorboard_logs en el archivo de configuración. Luego, simplemente ejecute tensorboard --logdir=path/to/logs en un terminal y ¡puede monitorear su experimento mientras está entrenando! TensorBoard viene con utilidades muy agradables para realizar un seguimiento de las normas de los pesos de su modelo, histogramas, distribuciones, visualización de incrustaciones, etc., por lo que realmente recomendamos usarlo.

Proporcionamos una clase de SingleTaskTrainer que puede usar para cualquier configuración supervisada que se ocupe de una tarea. Estamos trabajando en una clase MultiTaskTrainer para tratar con configuraciones de tareas múltiples y un SingleTaskFineTuner para modelos grandes ajustes finos.
Aquí hay algunos casos de uso para la transferencia NLP:
ExperimentRunner permite ejecutar secuencialmente sus conjuntos de experimentos y genera informes personalizados (solo necesita implementar su método report en una clase ReporterABC personalizada)Module de Pytorch y dejar que los entrenadores se ocupen de la parte de capacitación (al tiempo que controlan la mayoría de los parámetros de capacitación a través del archivo del experimento)Mientras experimenta con sus propios modelos / datos, la capacitación puede llevar algún tiempo. Para recibir una notificación cuando su entrenamiento termina o se bloquea, puede usar la biblioteca simple Knockknock de la gente de Huggingface, que agrega un decorador simple a su función de ejecución para notificarle a través de la holgura, el correo electrónico, etc.
La biblioteca se ha inspirado en la lectura del "procesamiento del lenguaje natural con Pytorch" de Delip Rao y Brian McMahan. Experimentos en experiments , el bloque de construcción de vocabulario y los vecinos más cercanos se toman o se adaptan del código proporcionado en el libro.