مشاهده در TensorFlow.org | در Google Colab اجرا شود | در GitHub مشاهده کنید | دانلود دفترچه یادداشت | مدل TF Hub را ببینید |
این COLAB demostrates حکم جهانی مدل رمزگذار CMLM با استفاده از SentEval ابزار است، که یک کتابخانه برای اندازه گیری کیفیت تعبیه شده جمله. جعبه ابزار SentEval شامل مجموعه متنوعی از وظایف پایین دستی است که قادر به ارزیابی قدرت تعمیم یک مدل جاسازی و ارزیابی ویژگی های زبانی کدگذاری شده است.
دو بلوک کد اول را برای تنظیم محیط اجرا کنید، در بلوک کد سوم می توانید یک وظیفه SentEval را برای ارزیابی مدل انتخاب کنید. برای اجرای این Colab یک زمان اجرا GPU توصیه می شود.
برای کسب اطلاعات بیشتر در مورد حکم جهانی مدل رمزگذار CMLM، و https://openreview.net/forum؟id=WDVD4lUCTzU
وابستگی ها را نصب کنید
pip install --quiet tensorflow-text
pip install --quiet torch==1.8.1
SentEval و داده های وظیفه را دانلود کنید
این مرحله SentEval را از github دانلود کرده و اسکریپت داده را برای دانلود داده های وظیفه اجرا کنید. ممکن است تا 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
- اتمام دیگر مدل های حکم رمزگذار جهانی
ارجاع
- Ziyi Yang، Yinfei Yang، Daniel Cer، Jax Law، Eric Darve. آموزش بازنمایی جملات جهانی با مدل زبان ماسک شده شرطی. نوامبر 2020