Documentation
Il s'agit d'un cadre pour les modèles de séquence à séquence (SEQ2SEQ) implémentés dans Pytorch. Le cadre a des composants modularisés et extensibles pour les modèles SEQ2SEQ, la formation et l'inférence, les points de contrôle, etc. Il s'agit d'une version alpha. Nous apprécions tout type de rétroaction ou de contribution.
SEQ2SEQ est un domaine en évolution rapide avec de nouvelles techniques et architectures qui sont publiées fréquemment. L'objectif de cette bibliothèque est de faciliter le développement de ces techniques et applications. Tout en améliorant constamment la qualité du code et de la documentation, nous nous concentrerons sur les éléments suivants:
Ce package nécessite Python 2.7 ou 3.6. Nous vous recommandons de créer un nouvel environnement virtuel pour ce projet (en utilisant VirtualEnv ou Conda).
pip install numpy (reportez-vous ici pour l'installation de Numpy).Actuellement, nous prenons uniquement l'installation à partir du code source à l'aide de setuptools. Découvrez le code source et exécutez les commandes suivantes:
pip install -r requirements.txt
python setup.py install
Si vous aviez déjà une version de Pytorch installée sur votre système, veuillez vérifier que le package de torch Active est au moins la version 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
Il faudra environ 3 minutes pour s'entraîner sur CPU et moins d'une minute avec une Tesla K80. Une fois la formation terminée, vous serez invité à entrer une nouvelle séquence pour traduire et le modèle imprimera sa prédiction (utilisez Ctrl-C pour se terminer). Essayez l'exemple ci-dessous!
Input: 1 3 5 7 9
Expected output: 9 7 5 3 1 EOS
Les points de contrôle sont organisés par des expériences et des horodatages comme indiqué dans la structure de fichiers suivante
experiment_dir
+-- input_vocab
+-- output_vocab
+-- checkpoints
| +-- YYYY_mm_dd_HH_MM_SS
| +-- decoder
| +-- encoder
| +-- model_checkpoint
L'exemple de script par défaut enregistre les points de contrôle dans le dossier experiment du répertoire racine. Regardez les usages de l'exemple de code pour plus d'options, notamment la reprise et le chargement à partir des points de contrôle.
Si vous avez des questions, des rapports de bogues et des demandes de fonctionnalités, veuillez ouvrir un problème sur GitHub. Pour les discussions en direct, veuillez consulter notre hall Gitter.
Nous apprécions tout type de rétroaction ou de contribution. N'hésitez pas à résoudre de petits problèmes tels que les corrections de bogues, l'amélioration de la documentation. Pour les contributions majeures et les nouvelles fonctionnalités, veuillez discuter avec les collaborateurs dans les questions correspondantes.
Nous utilisons des cycles de libération de 4 semaines, où pendant chaque cycle, les changements seront poussés à la branche develop et enfin fusionner vers la branche master à la fin de chaque cycle.
Nous configurons l'environnement de développement à l'aide de Vagrant. Exécutez vagrant up avec notre «Vagrantfile» pour commencer.
Les outils suivants sont nécessaires et installés dans l'environnement de développement par défaut:
La qualité et la maintenabilité du projet sont assurées par des tests complets. Nous encourageons la rédaction de tests unitaires et les tests d'intégration lors de la contribution de nouveaux codes.
Localement, veuillez exécuter nosetests dans le répertoire racine du package pour exécuter des tests unitaires. Nous utilisons Travisci pour exiger qu'une demande de traction doit passer tous les tests unitaires pour être éligibles pour fusionner. Voir la configuration de Travis pour plus d'informations.
Nous suivons Pep8 pour le style de code. En particulier, le style des docstrings est important pour générer de la documentation.
# 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