عرض على TensorFlow.org | تشغيل في Google Colab | عرض على جيثب | تحميل دفتر | انظر نموذج TF Hub |
هذا colab demostrates و العالمي الجملة نموذج التشفير CMLM باستخدام SentEval الأدوات، التي هي مكتبة لقياس جودة التضمينات الجملة. تتضمن مجموعة أدوات SentEval مجموعة متنوعة من المهام النهائية التي تكون قادرة على تقييم قوة التعميم لنموذج التضمين وتقييم الخصائص اللغوية المشفرة.
قم بتشغيل أول كتلتين من التعليمات البرمجية لإعداد البيئة ، في مقطع التعليمات البرمجية الثالث يمكنك اختيار مهمة SentEval لتقييم النموذج. يوصى بوقت تشغيل GPU لتشغيل Colab.
لمعرفة المزيد عن العالمي الجملة نموذج التشفير CMLM، انظر https://openreview.net/forum؟id=WDVD4lUCTzU
تثبيت التبعيات
pip install --quiet tensorflow-text
pip install --quiet torch==1.8.1
تنزيل SentEval وبيانات المهام
هذه الخطوة قم بتنزيل SentEval من جيثب وقم بتنفيذ البرنامج النصي للبيانات لتنزيل بيانات المهمة. قد يستغرق الأمر ما يصل إلى 5 دقائق حتى يكتمل.
قم بتثبيت SentEval وتنزيل بيانات المهمة
rm -rf ./SentEval
git clone https://github.com/facebookresearch/SentEval.git
cd $PWD/SentEval/data/downstream && bash get_transfer_data.bash > /dev/null 2>&1
Cloning into 'SentEval'... remote: Enumerating objects: 691, done.[K remote: Counting objects: 100% (2/2), done.[K remote: Compressing objects: 100% (2/2), done.[K remote: Total 691 (delta 0), reused 0 (delta 0), pack-reused 689[K Receiving objects: 100% (691/691), 33.25 MiB | 21.21 MiB/s, done. Resolving deltas: 100% (434/434), done.
تنفيذ مهمة إحاطة SentEval
تقوم كتلة التعليمات البرمجية التالية بتنفيذ مهمة SentEval وإخراج النتائج ، اختر إحدى المهام التالية لتقييم نموذج USE CMLM:
MR CR SUBJ MPQA SST TREC MRPC SICK-E
حدد نموذجًا ومعلمات ومهمة لتشغيلها. يمكن استخدام معلمات النماذج الأولية السريعة لتقليل وقت الحساب للحصول على نتيجة أسرع.
فإنه يأخذ عادة 5-15 دقائق لإكمال المهمة مع بارامس "النماذج الأولية السريعة" وتصل إلى ساعة واحدة مع '، وأفضل أداء أبطأ' بارامس.
params = {'task_path': PATH_TO_DATA, 'usepytorch': True, 'kfold': 5}
params['classifier'] = {'nhid': 0, 'optim': 'rmsprop', 'batch_size': 128,
'tenacity': 3, 'epoch_size': 2}
للحصول على نتيجة أفضل، استخدم أبطأ "أبطأ، وأفضل أداء" بارامس، حساب قد يستغرق ما يصل إلى 1 ساعة:
params = {'task_path': PATH_TO_DATA, 'usepytorch': True, 'kfold': 10}
params['classifier'] = {'nhid': 0, 'optim': 'adam', 'batch_size': 16,
'tenacity': 5, 'epoch_size': 6}
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import sys
sys.path.append(f'{os.getcwd()}/SentEval')
import tensorflow as tf
# Prevent TF from claiming all GPU memory so there is some left for pytorch.
gpus = tf.config.list_physical_devices('GPU')
if gpus:
# Memory growth needs to be the same across GPUs.
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
import tensorflow_hub as hub
import tensorflow_text
import senteval
import time
PATH_TO_DATA = f'{os.getcwd()}/SentEval/data'
MODEL = 'https://tfhub.dev/google/universal-sentence-encoder-cmlm/en-base/1'
PARAMS = 'rapid prototyping'
TASK = 'CR'
params_prototyping = {'task_path': PATH_TO_DATA, 'usepytorch': True, 'kfold': 5}
params_prototyping['classifier'] = {'nhid': 0, 'optim': 'rmsprop', 'batch_size': 128,
'tenacity': 3, 'epoch_size': 2}
params_best = {'task_path': PATH_TO_DATA, 'usepytorch': True, 'kfold': 10}
params_best['classifier'] = {'nhid': 0, 'optim': 'adam', 'batch_size': 16,
'tenacity': 5, 'epoch_size': 6}
params = params_best if PARAMS == 'slower, best performance' else params_prototyping
preprocessor = hub.KerasLayer(
"https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3")
encoder = hub.KerasLayer(
"https://tfhub.dev/google/universal-sentence-encoder-cmlm/en-base/1")
inputs = tf.keras.Input(shape=tf.shape(''), dtype=tf.string)
outputs = encoder(preprocessor(inputs))
model = tf.keras.Model(inputs=inputs, outputs=outputs)
def prepare(params, samples):
return
def batcher(_, batch):
batch = [' '.join(sent) if sent else '.' for sent in batch]
return model.predict(tf.constant(batch))["default"]
se = senteval.engine.SE(params, batcher, prepare)
print("Evaluating task %s with %s parameters" % (TASK, PARAMS))
start = time.time()
results = se.eval(TASK)
end = time.time()
print('Time took on task %s : %.1f. seconds' % (TASK, end - start))
print(results)
Evaluating task CR with rapid prototyping parameters Time took on task CR : 46.5. seconds {'devacc': 90.42, 'acc': 88.98, 'ndev': 3775, 'ntest': 3775}
يتعلم أكثر
- البحث عن المزيد من النماذج تضمين النص على TensorFlow المحور
- انظر أيضا عالمي متعدد اللغات الجملة التشفير CMLM نموذج
- تحقق من غيرها العالمي نماذج الحكم التشفير
المرجعي
- زيي يانغ ، وينفي يانغ ، ودانييل سير ، وجاكس لو ، وإريك دارف. تمثيلات الجملة العامة التعلم باستخدام نموذج اللغة المقنع الشرطي. نوفمبر 2020