يدرب هذا المثال RNN متعدد الطبقات (Elman أو GRU أو LSTM) على مهمة نمذجة اللغة. بشكل افتراضي ، يستخدم البرنامج النصي التدريبي مجموعة بيانات PTB ، المقدمة. يمكن بعد ذلك استخدام النموذج المدرب بواسطة البرنامج النصي لإنشاء نص جديد. هذا هو نقل pytorch/أمثلة/word_language_model مما يجعله USABLES على Floydhub.
يقبل البرنامج النصي main.py الوسائط التالية:
optional arguments:
-h, --help show this help message and exit
--data DATA location of the data corpus
--model MODEL type of recurrent net (RNN_TANH, RNN_RELU, LSTM, GRU)
--emsize EMSIZE size of word embeddings
--nhid NHID number of hidden units per layer
--nlayers NLAYERS number of layers
--lr LR initial learning rate
--clip CLIP gradient clipping
--epochs EPOCHS upper epoch limit
--batch-size N batch size
--bptt BPTT sequence length
--dropout DROPOUT dropout applied to layers (0 = no dropout)
--decay DECAY learning rate decay per epoch
--tied tie the word embedding and softmax weights
--seed SEED random seed
--cuda use CUDA
--log-interval N report interval
--save SAVE path to save the final modelمع هذه الحجج ، يمكن اختبار مجموعة متنوعة من النماذج. على سبيل المثال ، تنتج الوسائط التالية نماذج أبطأ ولكن أفضل:
python main.py --cuda --emsize 650 --nhid 650 --dropout 0.5 --epochs 40 # Test perplexity of 80.97
python main.py --cuda --emsize 650 --nhid 650 --dropout 0.5 --epochs 40 --tied # Test perplexity of 75.96
python main.py --cuda --emsize 1500 --nhid 1500 --dropout 0.65 --epochs 40 # Test perplexity of 77.42
python main.py --cuda --emsize 1500 --nhid 1500 --dropout 0.65 --epochs 40 --tied # Test perplexity of 72.30هذه الحيرة متساوية أو أفضل من تنظيم الشبكة العصبية المتكررة (Zaremba et al. 2014) وتشبه استخدام التضمين المخرجات لتحسين نماذج اللغة (Press & Wolf 2016 وربط ناقلات الكلمات ومصنفات الكلمات: إطار خسارة للنمذجة اللغوية (Inan et al. 2016) ، على الرغم من أن كلتا الأبقار قد تم تحسينها من خلال استخدام شكل متكرر).
قريباً.
إليك أوامر التدريب وتقييم وخدمة مهمة نمذجة اللغة الخاصة بك على Floydhub.
قبل البدء ، قم بتسجيل الدخول على Floydhub باستخدام أمر تسجيل الدخول Floyd ، ثم شوكة ويبدأ المشروع:
$ git clone https://github.com/floydhub/word-language-model.git
$ cd word-language-model
$ floyd init word-language-modelقبل البدء ، تحتاج إلى تحميل مجموعة بيانات Penn TreeBank-3 كمجموعة بيانات FloyDhub بعد هذا الدليل: إنشاء وتحميل مجموعة بيانات. ثم ستكون جاهزًا للعب مع نماذج لغة مختلفة.
# Train a LSTM on PTB with CUDA, reaching perplexity of 114.22
floyd run --gpu --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input " python main.py --cuda --epochs 7 "
# Train a tied LSTM on PTB with CUDA, reaching perplexity of 110.44
floyd run --gpu --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input " python main.py --cuda --epochs 7 --tied "
# Train a tied LSTM on PTB with CUDA for 40 epochs, reaching perplexity of 87.17
floyd run --gpu --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input " python main.py --cuda --tied "ملحوظة:
--gpu قم بتشغيل وظيفتك على مثيل GPU Floydhub.--env pytorch-0.2 يعد بيئة Pytorch لـ Python 3.--data <USERNAME>/dataset/<PENN-TB3>/<VERSION>:input بتركيب مجموعة بيانات Previus التي تم تحميلها في Penn TreeBank-3 في مجلد /input داخل الحاوية لوظيفتنا. يستخدم النموذج وحدة nn.RNN (ووحداته الشقيقة nn.GRU و nn.LSTM ) والتي ستستخدم تلقائيًا الواجهة الخلفية CUDNN إذا تم تشغيلها على CUDA مع تثبيت CUDNN.
أثناء التدريب ، إذا تم استلام مقاطعة لوحة المفاتيح (CTRL-C) ، يتم إيقاف التدريب ويتم تقييم النموذج الحالي مقابل مجموعة بيانات الاختبار.
يمكنك متابعة التقدم باستخدام أمر logs. يجب إكمال أول مثالين للتدريب في حوالي 5 دقائق على مثيل GPU و 40 'على وحدة المعالجة المركزية. يجب أن يستغرق المثال الأخير حوالي 30 'على مثيل GPU وما يزيد عن 3 ساعات على وحدة المعالجة المركزية.
حان الوقت لتقييم نموذجنا الذي يولد بعض النص:
# Generate samples from the trained LSTM model.
floyd run --gpu --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input --data < REPLACE_WITH_JOB_OUTPUT_NAME > :model " python generate.py --cuda "لقد قدمنا لك نموذجًا مدربًا مسبقًا مدربًا على 40 عصرًا يصل إلى الحيرة 87.17:
# Generate samples from the trained LSTM model.
floyd run --gpu --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input --data < REPLACE_WITH_JOB_OUTPUT_NAME > :model " python generate.py --cuda " يدعم Floydhub وضع Seving للتجريبي وغرض الاختبار. قبل خدمة النموذج الخاص بك من خلال API REST ، تحتاج إلى إنشاء floyd_requirements.txt وإعلان متطلبات القارورة فيه. إذا قمت بتشغيل وظيفة مع --mode serve ، فسيقوم Floydhub بتشغيل ملف app.py في مشروعك وإرفاقه بنقطة نهاية خدمة ديناميكية:
floyd run --gpu --mode serve --env pytorch-0.2 --data < USERNAME > /dataset/ < PENN-TB 3> / < VERSION > :input --data < REPLACE_WITH_JOB_OUTPUT_NAME > :modelسيقوم الأمر أعلاه بطباعة نقطة نهاية الخدمة لهذه المهمة في وحدة التحكم الطرفية الخاصة بك.
ستستغرق نقطة نهاية الخدمة بضع دقائق لتكون جاهزة. بمجرد انتهاء الأمر ، يمكنك التفاعل مع النموذج عن طريق إرسال طلب نشر مع عدد الكلمات ودرجة الحرارة التي سيستخدمها النموذج لإنشاء نص:
# Template
# curl -X POST -o <NAME_&_PATH_DOWNLOADED_GENERATED_TEXT> -F "words=<NUMBER_OF_WORDS_TO_GENERATE>" -F "temperature=<TEMPERATURE>" <SERVICE_ENDPOINT>
curl -X POST -o generated.txt -F " words=100 " -F " temperature=3 " https://www.floydlabs.com/expose/vk47ixT8NeYBTFeMavbWtaسيبقى أي وظيفة تعمل في وضع التقديم مستيقظًا حتى يصل إلى أقصى قدر من وقت التشغيل. لذلك بمجرد الانتهاء من الاختبار ، تذكر إغلاق الوظيفة!
لاحظ أن هذه الميزة في وضع المعاينة وليست جاهزة للإنتاج بعد
بعض الموارد المفيدة على NLP لمهمة التعلم العميق ونمذجة اللغة:
بالنسبة لأي أسئلة ، لا تتردد الأخطاء (حتى الأخطاء المطبعية) و/أو طلبات الميزات في الاتصال بي أو فتح مشكلة!