Documentación
Este es un marco para los modelos de secuencia a secuencia (SEQ2SEQ) implementados en Pytorch. El marco tiene componentes modularizados y extensibles para modelos SEQ2SEQ, entrenamiento e inferencia, puntos de control, etc. Esta es una versión alfa. Apreciamos cualquier tipo de retroalimentación o contribución.
SEQ2SEQ es un campo en rápida evolución con nuevas técnicas y arquitecturas que se publican con frecuencia. El objetivo de esta biblioteca es facilitar el desarrollo de tales técnicas y aplicaciones. Si bien mejora constantemente la calidad del código y la documentación, nos centraremos en los siguientes elementos:
Este paquete requiere Python 2.7 o 3.6. Recomendamos crear un nuevo entorno virtual para este proyecto (usando VirtualEnv o Conda).
pip install numpy (consulte aquí para obtener problemas para instalar Numpy).Actualmente solo admitemos la instalación del código fuente utilizando SetupTools. Consulte el código fuente y ejecute los siguientes comandos:
pip install -r requirements.txt
python setup.py install
Si ya tenía una versión de Pytorch instalada en su sistema, verifique que el paquete de antorcha activo sea al menos la versión 0.1.11.
# Run script to generate the reverse toy dataset
# The generated data is stored in data/toy_reverse by default
scripts/toy.sh
TRAIN_PATH=data/toy_reverse/train/data.txt
DEV_PATH=data/toy_reverse/dev/data.txt
# Start training
python examples/sample.py --train_path $TRAIN_PATH --dev_path $DEV_PATH
Tomará unos 3 minutos entrenar en CPU y menos de 1 minuto con un Tesla K80. Una vez que se complete la capacitación, se le pedirá que ingrese una nueva secuencia para traducir y el modelo imprimirá su predicción (use CTRL-C para terminar). ¡Prueba el ejemplo a continuación!
Input: 1 3 5 7 9
Expected output: 9 7 5 3 1 EOS
Los puntos de control están organizados por experimentos y marcas de tiempo como se muestra en la siguiente estructura de archivo
experiment_dir
+-- input_vocab
+-- output_vocab
+-- checkpoints
| +-- YYYY_mm_dd_HH_MM_SS
| +-- decoder
| +-- encoder
| +-- model_checkpoint
El script de muestra de forma predeterminada guarda los puntos de control en la carpeta experiment del directorio raíz. Mire los usos del código de muestra para obtener más opciones, incluida la reanudación y la carga desde los puntos de control.
Si tiene alguna pregunta, informes de errores y solicitudes de funciones, abra un problema en GitHub. Para las discusiones en vivo, vaya a nuestro lobby de Gitter.
Apreciamos cualquier tipo de retroalimentación o contribución. No dude en proceder con pequeños problemas como correcciones de errores, mejora de la documentación. Para contribuciones importantes y nuevas características, discuta con los colaboradores en los temas correspondientes.
Estamos utilizando ciclos de liberación de 4 semanas, donde durante cada ciclo los cambios se empujarán a la rama develop y finalmente se fusionarán con la rama master al final de cada ciclo.
Configuramos el entorno de desarrollo usando Vagrant. Ejecute vagrant up con nuestro 'Vagrant File' para comenzar.
Las siguientes herramientas son necesarias e instaladas en el entorno de desarrollo de forma predeterminada:
La calidad y la mantenibilidad del proyecto se garantizan mediante pruebas integrales. Alentamos a escribir pruebas unitarias y pruebas de integración al contribuir con nuevos códigos.
A nivel local, ejecute nosetests en el directorio de la raíz del paquete para ejecutar pruebas unitarias. Utilizamos Travisci para exigir que una solicitud de extracción tenga que pasar todas las pruebas unitarias para ser elegibles para fusionarse. Consulte la configuración de Travis para obtener más información.
Seguimos a Pep8 para el estilo de código. Especialmente el estilo de las documentos es importante para generar documentación.
# Python syntax errors or undefined names
flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
# Style checks
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics