TensorFlow.org এ দেখুন | Google Colab-এ চালান | GitHub এ দেখুন | নোটবুক ডাউনলোড করুন | TF হাব মডেল দেখুন |
এই colab demostrates ইউনিভার্সাল বাক্য এনকোডার CMLM মডেল ব্যবহার SentEval টুলকিট, অর্থাৎ প্রত্যেক বাক্যে embeddings মান পরিমাপের জন্য একটি লাইব্রেরী। সেন্টইভাল টুলকিটে ডাউনস্ট্রিম কাজের একটি বিচিত্র সেট রয়েছে যা একটি এমবেডিং মডেলের সাধারণীকরণ ক্ষমতা মূল্যায়ন করতে এবং এনকোড করা ভাষাগত বৈশিষ্ট্যগুলিকে মূল্যায়ন করতে সক্ষম।
পরিবেশ সেটআপ করতে প্রথম দুটি কোড ব্লক চালান, তৃতীয় কোড ব্লকে আপনি মডেলটি মূল্যায়ন করার জন্য একটি SentEval টাস্ক বেছে নিতে পারেন। এই Colab চালানোর জন্য একটি GPU রানটাইম সাজেস্ট করা হয়।
ইউনিভার্সাল বাক্য এনকোডার CMLM মডেল সম্পর্কে আরো জানতে, https://openreview.net/forum?id=WDVD4lUCTzU
নির্ভরতা ইনস্টল করুন
pip install --quiet tensorflow-text
pip install --quiet torch==1.8.1
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