قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بإنشاء وتدريب ونشر نموذج لغة من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker

كان الحجم المتزايد لنماذج اللغة أحد أكبر الاتجاهات في معالجة اللغة الطبيعية (NLP) في السنوات الأخيرة. منذ عام 2018 ، شهدنا تطويرًا ونشرًا غير مسبوق لنماذج لغوية أكبر من أي وقت مضى ، بما في ذلك BERT ومتغيراتها ، و GPT-2 و T-NLG و GPT-3 (175 مليار معلمة).

دفعت هذه النماذج حدود الابتكارات المعمارية الممكنة. نواجه العديد من التحديات عند تدريب نماذج التعلم العميق واسعة النطاق ، لا سيما الموجة الجديدة من المحولات التوليدية المدربة مسبقًا. تشمل هذه التحديات قيود الأجهزة والمفاضلات مع الحساب والكفاءة. للتغلب على تحديات النماذج وتوازي البيانات ، تقدم AWS مجموعة واسعة من القدرات.

في هذا المنشور ، نقدم طريقتين رئيسيتين: موازاة البيانات وتوازي النموذج باستخدام الأمازون SageMaker، وناقش إيجابياتهم وسلبياتهم.

نموذج

بالنسبة لنموذج اللغة ، نستخدم المحولات ، المقدمة في الورقة الاهتمام هو كل ما تحتاجه. المحولات هي نماذج تعليمية عميقة مصممة لتتجنب عمدًا مآزق RNNs من خلال الاعتماد على آلية الاهتمام الذاتي لرسم التبعيات العالمية بين المدخلات والمخرجات. تسمح بنية نموذج المحولات بموازنة أفضل بشكل ملحوظ ويمكن أن تحقق أداءً عاليًا في وقت تدريب قصير نسبيًا. مبني على نجاح Transformers ، BERT ، الذي تم تقديمه في الورقة BERT: التدريب المسبق لمحولات ثنائية الاتجاه عميقة لفهم اللغة، إضافة تدريب ثنائي الاتجاه لتمثيل اللغة. مستوحى من مهمة Cloze ، تم تدريب BERT مسبقًا على نمذجة اللغة المقنعة (MLM) ، حيث يتعلم النموذج استرداد الكلمات الأصلية للرموز المقنعة عشوائيًا. يتم أيضًا اختبار نموذج BERT مسبقًا في مهمة التنبؤ بالجمل التالية (NSP) للتنبؤ بما إذا كانت جملتان في ترتيب قراءة صحيح. منذ ظهوره في عام 2018 ، تم استخدام BERT وتنوعاته على نطاق واسع في نماذج اللغة.

نبدأ بإنشاء طبقتين من التضمين من أجل التضمين المميز والموضعي. إن حفلات الزفاف المدخلة هي مجموع حفلات الزفاف المميزة وحفلات الزفاف في الموضع.

class TokenAndPositionEmbedding(tf.keras.layers.Layer): """ Creates two separate embedding layers: one for tokens and one for token index (positions). """ def __init__(self, maxlen, vocab_size, embed_dim): super(TokenAndPositionEmbedding, self).__init__() self.token_emb = tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embed_dim) self.pos_emb = tf.keras.layers.Embedding(input_dim=maxlen, output_dim=embed_dim) def call(self, x): maxlen = tf.shape(x)[-1] # positions are represented by a token's index positions = tf.range(start=0, limit=maxlen, delta=1) positions = self.pos_emb(positions) # token embedding x = self.token_emb(x) # return sum as input return x + positions

ثم نحدد كتلة وحدة فك ترميز المحولات بطبقتين فرعيتين: طبقة انتباه ذاتي متعددة الرؤوس ، وشبكة تغذية أمامية بسيطة متصلة بالكامل متبوعة بتطبيع الطبقة والتسرب:

class TransformerBlock(tf.keras.layers.Layer): def __init__(self, embed_dim, num_heads, ff_dim, rate=0.1): # self attention layer super(TransformerBlock, self).__init__() self.att = tf.keras.layers.MultiHeadAttention( num_heads=num_heads, key_dim=embed_dim) # feed forward layer self.ffn = [tf.keras.layers.Dense(ff_dim, activation="relu"), tf.keras.layers.Dense(embed_dim)] # layer normalization self.layernorm1 = tf.keras.layers.LayerNormalization(epsilon=1e-6) self.layernorm2 = tf.keras.layers.LayerNormalization(epsilon=1e-6) # dropout self.dropout1 = tf.keras.layers.Dropout(rate) self.dropout2 = tf.keras.layers.Dropout(rate) def call(self, inputs): # getting batch size and seq len from input shape input_shape = tf.shape(inputs) batch_size = input_shape[0] seq_len = input_shape[1] # decoder casual mask casual_mask = casual_attention_mask(batch_size, seq_len, seq_len, tf.bool) # self attention forward pass attention_output = self.att(inputs, inputs, attention_mask=causal_mask) # dense layers, dropout and normalization attention_output = self.dropout1(attention_output) ffn_output = self.ffn[0](out1) ffn_output = self.ffn[1](ffn_output) out2 = self.dropout2(ffn_output) return self.layernorm2(out1 + out2)

أخيرًا ، قمنا بإنشاء نموذج لغتنا مع طبقة التضمين وكتل المحولات السابقة:

class MyModel(tf.keras.Model): def __init__(self, maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate): super(MyModel, self).__init__(maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate) # embedding layer self.embedding_layer = TokenAndPositionEmbedding(maxlen, vocab_size, embed_dim) # transformer blocks self.transformer_blocks = [ TransformerBlock(embed_dim, num_heads, feed_forward_dim) for i in range(num_layers) ] # last dense layer self.dense = tf.keras.layers.Dense(vocab_size) def call(self, inputs, training=None): x_emb = self.embedding_layer(inputs) x = x_emb for transformer_block in self.transformer_blocks: x = transformer_block(x) outputs = self.dense(x) return [outputs, x_emb] def init_train_settings(maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate): """ Creates model, optimizer and loss function """ model = MyModel(maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate) loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate) return model, optimizer, loss_fn

اعتمادًا على المعلمات الفائقة ، يمكنك قياس هذا النموذج من آلاف المعلمات إلى مليارات من المعلمات. يتمثل التحدي الأساسي في نماذج المليار متغير في أنه لا يمكنك استضافة النموذج في حالة واحدة وتحتاج إلى توزيع النموذج على عدة عقد للتدريب والاستدلال.

مجموعة البيانات

في تجاربنا ، استخدمنا مجموعة بيانات الوبر. The Pile عبارة عن مجموعة بيانات نصية باللغة الإنجليزية بحجم 800 جيجا بايت مصممة لتدريب نماذج اللغة على نطاق واسع. تم إنشاؤه من 22 مجموعة بيانات متنوعة وعالية الجودة ، بما في ذلك مجموعات بيانات البرمجة اللغوية العصبية القائمة والمجموعات المُقدمة حديثًا.

يتم إنشاء مجموعة البيانات من مجموعة متنوعة من مصادر البيانات ، بما في ذلك الكتب. مستودعات جيثب ؛ صفحات الانترنت؛ سجلات الدردشة وأوراق الطب والفيزياء والرياضيات وعلوم الكمبيوتر والفلسفة. على وجه التحديد ، يستخدم المصادر التالية: Pile-CC و PubMed Central و ArXiv و GitHub و FreeLaw Project و Stack Exchange و US Patent and Trademark Office و PubMed و Ubuntu و IRC و HackerNews و YouTube و PhilPapers و Books3 و Project Gutenberg ( PG-19) ، و OpenSubtitles ، ويكيبيديا الإنجليزية ، و DM Mathematics ، و EuroParl ، ومجموعة Enron Emails corpus ، و NIH ExPorter. ويتضمن أيضًا OpenWebText2 و BookCorpus2 ، وهما امتدادان لمجموعتي بيانات OpenWebText و BookCorpus الأصلية ، على التوالي. يمكن أن يؤدي التنوع في مصادر البيانات إلى تحسين المعرفة العامة عبر المجال وبالتالي تحسين قدرات التعميم النهائية.

التحدي الأساسي مع مجموعة البيانات هذه هو الحجم الهائل ؛ تحتوي مجموعة البيانات على 825 جيجا بايت من النص ، والتي تُترجم إلى 4.2 تيرا بايت من نقاط البيانات المُجهزة مسبقًا والمضغوطة. على غرار التحديات التي نواجهها في التدريب واستضافة النماذج ، فإن تدريب نموذج باستخدام مجموعة البيانات هذه في مثيل واحد سيستغرق الكثير من الوقت وغير عملي.

يتمثل الحل الذي نقدمه في تقسيم مجموعة البيانات إلى ما يقرب من 1 جيجا بايت من البيانات ، وتحميل الميزات ومعالجتها مسبقًا في مجموعة بيانات TensorFlow الأشياء ، وتخزينها في خدمة الملفات المرنة من أمازون (أمازون EFS). توفر مجموعات بيانات TensorFlow خط أنابيب بيانات سهل الاستخدام وعالي الأداء يتكامل بشكل جيد مع نماذجنا. Amazon EFS هي خدمة سهلة الاستخدام تمكننا من إنشاء نظام ملفات مشترك يتوسع تلقائيًا مع إضافة الملفات وحذفها. بالإضافة إلى ذلك ، فإن Amazon EFS قادرة على الاندفاع إلى مستويات إنتاجية أعلى عند الحاجة ، وهو أمر بالغ الأهمية في بياناتنا وخط أنابيب التدريب الخاص بنا.

بعد ذلك ، ننظر في استراتيجيات التدريب الموزعة لمواجهة هذه التحديات.

التدريب الموزع

في هذا المشروع ، واجهنا تحديين: قياس حجم النموذج وحجم البيانات. قد تؤدي زيادة حجم النموذج وعدد المعلمات القابلة للتدريب إلى دقة أفضل ، ولكن هناك حدًا للنموذج الذي يمكنك ملاءمته في ذاكرة GPU واحدة أو حتى وحدات معالجة رسومات متعددة في مثيل واحد. بالإضافة إلى ذلك ، تستغرق أحجام النماذج الأكبر وقتًا أطول للتدريب.

يمكنك معالجة هذه التحديات بطريقتين مختلفتين: توازي البيانات ونموذج التوازي. باستخدام توازي البيانات ، نقوم بإجراء هبوط التدرج العشوائي (SGD) من خلال توزيع سجلات دفعة صغيرة على أجهزة مختلفة لتسريع التدريب. ومع ذلك ، فإن التدريب على البيانات المتوازية يأتي مع تعقيد إضافي لحوسبة متوسط ​​التدرج للدفعة الصغيرة مع التدرجات من جميع الأجهزة ، وهي خطوة تسمى AllReduce، والتي تصبح أكثر صعوبة مع نمو مجموعة التدريب. أثناء استخدام توازي البيانات ، يجب أن نكون قادرين على ملاءمة النموذج ونقطة بيانات واحدة في جهاز (وحدة المعالجة المركزية أو وحدة معالجة الرسومات) ، وهو عامل مقيد في تجاربنا لأن حجم مثل هذا النموذج الكبير أكبر بكثير من ذاكرة وحدة معالجة الرسومات الفردية بحجم.

الحل الآخر هو استخدام نموذج التوازي ، الذي يقسم النموذج على أجهزة متعددة. نموذج التوازي هو عملية تقسيم النموذج بين أجهزة أو عقد متعددة (مثل مثيلات مجهزة بوحدة معالجة الرسومات) وإنشاء خط أنابيب فعال لتدريب النموذج عبر هذه الأجهزة لزيادة استخدام وحدة معالجة الرسومات إلى أقصى حد.

موازنة البيانات

موازاة البيانات هو النهج الأكثر شيوعًا لوحدات معالجة الرسومات المتعددة أو التدريب الموزع. يمكنك تجميع بياناتك وإرسالها إلى أجهزة متعددة (كل منها يستضيف نموذجًا منسوخًا) ، ثم تجميع النتائج. جربنا حزمتين لموازنة البيانات: Horovod و وزعت SageMaker مكتبة البيانات المتوازية.

Horovod هو إطار عمل للتدريب على التعلم العميق موزع لـ TensorFlow و Keras و PyTorch و Apache MXNet. لاستخدام Horovod ، مررنا بالعملية التالية:

  1. التهيئة عن طريق التشغيل hvd.init().
  2. اربط كل جهاز بعملية واحدة. ترتبط العملية الأولى أو العامل بالجهاز الأول ، وترتبط العملية الثانية بالجهاز الثاني ، وهكذا.
  3. اضبط معدل التعلم بناءً على عدد الأجهزة.
  4. لف المحسن في hvd.DistributedOptimizer.
  5. قم ببث حالات المتغير الأولية من العامل الأول ذو الرتبة 0 إلى جميع العمليات الأخرى. يعد هذا ضروريًا لضمان التهيئة المتسقة لجميع العمال عند بدء التدريب بأوزان عشوائية أو استعادة من نقطة تفتيش.
  6. تأكد من أن الجهاز 0 فقط يمكنه حفظ نقاط التفتيش لمنع العمال الآخرين من إفسادها.

فيما يلي نص التدريب:

import horovod.tensorflow as hvd
# Initialize Horovod
hvd.init() # Pin GPU to be used to process local rank (one GPU per process)
gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True)
if gpus: tf.config.experimental.set_visible_devices(gpus[hvd.local_rank()], 'GPU') # Build model
... @tf.function
def training_step(texts, labels, first_batch): with tf.GradientTape() as tape: predictions = model(texts, training=True) loss = loss_fn(labels, predictions[0]) # Horovod: add Horovod Distributed GradientTape. tape = hvd.DistributedGradientTape(tape) grads = tape.gradient(loss, model.trainable_variables) opt.apply_gradients(zip(grads, model.trainable_variables)) # Horovod: broadcast initial variable states from rank 0 to all other processes. # This is necessary to ensure consistent initialization of all workers when # training is started with random weights or restored from a checkpoint. # # Note: broadcast should be done after the first gradient step to ensure optimizer # initialization. if first_batch: hvd.broadcast_variables(model.variables, root_rank=0) hvd.broadcast_variables(opt.variables(), root_rank=0) return loss # Horovod: adjust number of steps based on number of GPUs.
for batch, (texts, labels) in enumerate(dataset.take(10000 // hvd.size())): loss = training_step(texts, labels, batch == 0) if batch % 10 == 0 and hvd.local_rank() == 0: print('Step #%dtLoss: %.6f' % (batch, loss)) # Horovod: save checkpoints only on worker 0 to prevent other workers from
# corrupting it.
if hvd.rank() == 0: checkpoint.save(checkpoint_dir)

تتيح لنا مكتبة البيانات المتوازية SageMaker توسيع نطاق تدريبنا بكفاءة شبه خطية ، وتسريع تدريبنا مع الحد الأدنى من التغييرات في التعليمات البرمجية. تقوم المكتبة بعمل مخصص AllReduce التشغيل وتحسين الاتصال من جهاز إلى جهاز من خلال الاستفادة الكاملة من البنية التحتية لشبكة AWS و الأمازون الحوسبة المرنة السحابية (Amazon EC2) طبولوجيا مثيل. لاستخدام مكتبة بيانات SageMaker المتوازية ، مررنا بالعملية التالية:

  1. الاستيراد والتهيئة sdp.init().
  2. اربط كل جهاز بملف smdistributed.dataparallel عملية مع local_rank. sdp.tensorflow.local_rank() يعطينا الترتيب المحلي للأجهزة. القائد هو 0 ، والعاملين في المرتبة 1 ، 2 ، 3 ، وهكذا.
  3. اضبط معدل التعلم بناءً على عدد الأجهزة.
  4. التفاف tf.GradientTape مع DistributedGradientTape لأداء AllReduce.
  5. بث متغيرات النموذج الأولي من العقدة البادئة إلى جميع العقد العاملة.
  6. تأكد من أن الجهاز 0 فقط يمكنه حفظ نقاط التفتيش.

موازاة النموذج

يمكننا ضبط المعلمات الفائقة للحفاظ على النموذج صغيرًا بما يكفي للتدريب باستخدام وحدة معالجة رسومات واحدة ، أو يمكننا استخدام نموذج التوازي لتقسيم النموذج بين وحدات معالجة رسومات متعددة عبر مثيلات متعددة. يمكن أن تؤدي زيادة عدد المعلمات القابلة للتدريب في النموذج إلى دقة أفضل ، ولكن هناك حدًا لحجم النموذج الأقصى الذي يمكنك احتوائه في ذاكرة GPU واحدة. استخدمنا مكتبة SageMaker الموزعة المتوازية لتدريب نماذجنا الأكبر. والخطوات هي كما يلي:

  1. استيراد المكتبة وتهيئتها باستخدام smp.init().
  2. يحتاج نموذج Keras إلى أن يرث من smp.DistributedModel بدلاً من فئة Keras Model.
  3. المجموعات drop_remainder=True في ال tf.Dataset.batch() طريقة للتأكد من أن حجم الدُفعة قابل للقسمة دائمًا على عدد الميكروبات.
  4. تحتاج جميع العمليات العشوائية في خط أنابيب البيانات إلى استخدام نفس البذور: smp.dp_rank()، على سبيل المثال، shuffle(ds, seed=smp.dp_rank()). يضمن ذلك اتساق عينات البيانات عبر الأجهزة التي تحتوي على أقسام نموذجية مختلفة.
  5. يجب أن يكون المنطق الأمامي والخلفي في دالة خطوة مع smp.step زخرفة.
  6. إجراء المعالجة اللاحقة على النواتج عبر microbatches باستخدام أساليب StepOutput مثل reduce_mean. smp.step يجب أن يكون للدالة قيمة إرجاع تعتمد على ناتج smp.DistributedModel.

نص التدريب كالتالي:

import smdistributed.modelparallel.tensorflow as smp # SMP: Initialize
smp.init() # SMP: Define smp.DistributedModel the same way as Keras sub-classing API
class MyModel(smp.DistributedModel): def __init__(self, maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate): super(MyModel, self).__init__(maxlen, vocab_size, embed_dim, num_heads, feed_forward_dim, num_layers, learning_rate) self.embedding_layer = gpt_model.TokenAndPositionEmbedding(maxlen, vocab_size, embed_dim) self.transformer_blocks = [ gpt_model.TransformerBlock(embed_dim, num_heads, feed_forward_dim) for i in range(num_layers) ] self.dense = tf.keras.layers.Dense(vocab_size) def call(self, inputs, training=None): x_emb = self.embedding_layer(inputs) x = x_emb for transformer_block in self.transformer_blocks: x = transformer_block(x) outputs = self.dense(x) return [outputs, x_emb] # SMP: Define smp.step. Return any tensors needed outside
@smp.step
def get_grads(texts, labels): predictions = model(texts, training=True) loss = loss_fn(labels, predictions[0]) grads = optimizer.get_gradients(loss, model.trainable_variables) return grads, loss, predictions[0] @tf.function
def train_step(texts, labels, first_batch): gradients, loss, predictions = get_grads(texts, labels) # SMP: Accumulate the gradients across microbatches gradients = [g.accumulate() for g in gradients] optimizer.apply_gradients(zip(gradients, model.trainable_variables)) # SMP: Average the loss across microbatches train_loss(loss.reduce_mean()) # SMP: Merge predictions across microbatches train_accuracy(labels, predictions.merge()) return loss.reduce_mean() histories = [] for _ in range(epochs): train_loss.reset_states() train_accuracy.reset_states() for texts, labels in text_ds: for i in range(128): text = tf.expand_dims(texts[0][i], axis=0) label = tf.expand_dims(labels[0][i], axis=0) train_step(text, label) 

للحصول على دليل مفصل لتمكين البرنامج النصي للتدريب TensorFlow لمكتبة SageMaker الموزعة المتوازية ، ارجع إلى تعديل البرنامج النصي للتدريب على TensorFlow. بالنسبة إلى PyTorch ، يرجى الرجوع إلى تعديل البرنامج النصي للتدريب على PyTorch.

مصحح أخطاء SageMaker

ناقشنا في الأقسام السابقة كيفية تحسين التدريب باستخدام تقنيات موازنة البيانات والنموذج. مع الأمازون SageMaker المصحح، يمكننا الآن الحصول على معلومات توصيف الأداء من تدريباتنا لتحديد مدى تحسن التدريب. بشكل افتراضي ، يلتقط Debugger مقاييس النظام لكل مهمة تدريب SageMaker مثل GPU ، واستخدام وحدة المعالجة المركزية ، والذاكرة ، والشبكة ، والإدخال / الإخراج بفاصل زمني لأخذ العينات يبلغ 500 مللي ثانية. يمكننا الوصول إلى البيانات على النحو التالي:

from smdebug.profiler.analysis.notebook_utils.training_job import TrainingJob
tj = TrainingJob('SMD-MP-demo-2022-01-21-06-43-23-841', "us-east-1")
tj.wait_for_sys_profiling_data_to_be_available()
system_metrics_reader = tj.get_systems_metrics_reader()

المصحح يوفر المرافق ل تصور بيانات التنميط بطرق مختلفة. في المثال التالي ، نرى إجمالي استخدام GPU ووحدة المعالجة المركزية بالإضافة إلى وقت انتظار الإدخال / الإخراج لوظيفة التدريب على وحدات معالجة الرسومات المتعددة باستخدام Horovod. لإنشاء هذه الرسوم البيانية ، نقوم بتشغيل الكود التالي:

from smdebug.profiler.analysis.notebook_utils.timeline_charts import TimelineCharts view_timeline_charts = TimelineCharts( system_metrics_reader, framework_metrics_reader, select_dimensions=["CPU", "GPU", "I/O"], select_events=["total"], show_workers=False )

يتقلب استخدام وحدة معالجة الرسومات بشكل متكرر بين 0-100٪ ، وتعتبر أوقات انتظار الإدخال / الإخراج العالية مع استخدام منخفض لوحدة معالجة الرسومات مؤشرًا على عنق الزجاجة في الإدخال / الإخراج. علاوة على ذلك ، فإن إجمالي استخدام وحدة المعالجة المركزية لا يتجاوز أبدًا 70٪ ، مما يعني أنه يمكننا تحسين المعالجة المسبقة للبيانات من خلال زيادة عدد عمليات العاملين.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يمكننا تحسين الأداء بالتبديل من Horovod إلى مكتبة البيانات المتوازية الموزعة من SageMaker. في الرسوم البيانية التالية ، يمكننا أن نرى أن وحدات معالجة الرسومات تستخدم بكفاءة أكبر وتتراجع فقط إلى الاستخدام المنخفض لفترات زمنية قصيرة.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

البنية التحتية للتدريب

لتدريب النماذج ، استخدمنا مثيلات 10 ml.p3.16xlarge باستخدام وظيفة تدريب SageMaker. يقلل SageMaker من وقت وتكلفة تدريب نماذج التعلم الآلي (ML) وضبطها دون الحاجة إلى إدارة البنية التحتية. باستخدام SageMaker ، يمكنك بسهولة تدريب نماذج ML وضبطها باستخدام أدوات مدمجة لإدارة تجارب التدريب وتتبعها ، واختيار المعلمات الفائقة المثالية تلقائيًا ، ومهام التدريب لتصحيح الأخطاء ، ومراقبة استخدام موارد النظام مثل وحدات معالجة الرسومات (GPU) ووحدات المعالجة المركزية (CPU) وعرض النطاق الترددي للشبكة. تمت استضافة البيانات في Amazon EFS ، مما مكننا من النمو والانكماش حيث نضيف الملفات ونزيلها دون الحاجة إلى الإدارة أو التزويد. كانت أهدافنا الأساسية هي تحسين سرعة التدريب وخفض التكاليف.

قابلية التوسع في النموذج

على الرغم من أن هذه البنية التحتية تُستخدم بشكل أساسي لتوليد اللغة ، مع بنية GPT ومجموعة بيانات Pile ، يمكنك استخدام هذه التقنيات لتدريب نماذج المحولات واسعة النطاق ، وهو أمر مفيد في العديد من المجالات خارج البرمجة اللغوية العصبية. في التعلم الآلي نفسه ، يتم الآن حل العديد من مهام رؤية الكمبيوتر باستخدام معماريات ذات معلمات كبيرة (محولات) حيث ثبت أنها تتفوق على شبكات CNN التقليدية (الشبكة العصبية التلافيفية) في مهام مثل التعلم التمثيلي (انظر الارتقاء بأحدث ما توصلت إليه التقنية في رؤية الكمبيوتر باستخدام محولات ذاتية الإشراف وتدريب أكثر كفاءة بمعدل 10 أضعاف) ورسم الخرائط على نطاق واسع للصور إلى نص (مثل CLIP). النماذج ذات المعلمات الكبيرة تفتح أيضًا آفاقًا جديدة في علوم الحياة في مجالات مثل تحليل بنية البروتين و تحليل بيانات الصورة الطبية.

يجب أن تنطبق الحلول التي نوردها بالتفصيل في هذا المنشور للتدريب الموزع وإدارة النماذج الكبيرة على النماذج في أي من هذه المجالات أيضًا.

المقايضات

كان هناك نقاش مستمر في مجتمع البحث فيما يتعلق بمخاطر تدريب النماذج اللغوية واسعة النطاق ، وما إذا كان قد تم التفكير بشكل كافٍ في المخاطر المحتملة المرتبطة بتطويرها واستراتيجيات للتخفيف من هذه المخاطر ، والتي يشمل بعضها المالية و التكاليف البيئية. وفقا ل ورقة المنشور في ACM ، تم تقدير تدريب نموذج قاعدة BERT واحد (بدون ضبط فرط المعلمة) على وحدات معالجة الرسومات (GPU) على أنها تتطلب قدرًا كبيرًا من الطاقة مثل رحلة عبر أمريكا. مقياس التأثيرات البيئية مع حجم النموذج ، والقدرة على ضبط مثل هذه النماذج بكفاءة يمكن أن يقلل من الانبعاثات بشكل كبير. أطلقت AWS مؤخرًا إصدارًا جديدًا من أداة البصمة الكربونية للعملاء، متاح لجميع عملاء AWS بدون تكلفة ، كجزء من جهود Amazon لزيادة الاستدامة وتقليل انبعاثات الكربون. يمكن أن يؤدي تشغيل التطبيقات على سحابة AWS إلى تقليل البصمة الكربونية (عند مقارنتها بمراكز بيانات المؤسسة التي تم مسحها في تقرير 2019).

وفي الختام

أظهر هذا المنشور حلاً يسهل ضبط نماذج اللغة بمليار معلمة على سحابة AWS باستخدام SageMaker.

لمزيد من المعلومات حول نموذج التوازي مع SageMaker ، راجع قم بتدريب 175+ مليار من نماذج البرمجة اللغوية العصبية مع إضافات نموذجية متوازية و Hugging Face على Amazon SageMaker و كيف استخدم Latent Space مكتبة موازية نموذج Amazon SageMaker لدفع حدود المحولات واسعة النطاق.

إذا كنت ترغب في المساعدة في تسريع استخدامك لـ ML في منتجاتك وعملياتك ، فيرجى الاتصال بـ مختبر أمازون ML Solutions.


حول المؤلف

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.سيا غلامى هو أحد كبار علماء البيانات في Amazon ML Solutions Lab ، حيث يقوم ببناء حلول AI / ML للعملاء في مختلف الصناعات. إنه متحمس لمعالجة اللغة الطبيعية (NLP) والتعلم العميق. خارج العمل ، تستمتع Sia بقضاء الوقت في الطبيعة ولعب التنس.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.مهدي نوريهو مدير وكبير العلماء التطبيقيين في Amazon ML Solutions Lab ، حيث يعمل مع العملاء في مختلف الصناعات ، ويساعدهم على تسريع رحلة الترحيل إلى السحابة ، وحل مشكلات التعلم الآلي الخاصة بهم باستخدام أحدث الحلول و التقنيات.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.موهيون كيم هو عالم بيانات في Amazon Machine Learning Solutions Lab. إنه يحل مشاكل العمل المختلفة للعملاء من خلال تطبيق التعلم الآلي والتعلم العميق ، ويساعدهم أيضًا على اكتساب المهارات.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي. داني بيرد هو عالم تطبيقي في Amazon ML Solutions Lab. في المختبر ، ساعد العملاء على تطوير حلول ML المتقدمة ، في تخصصات تعلم الآلة من رؤية الكمبيوتر إلى التعلم المعزز. إنه متحمس لدفع التكنولوجيا إلى الأمام وفتح إمكانات جديدة من منتجات AWS على طول الطريق.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.فرانسيسكو كالديرون رودريغيز هو عالم بيانات في Amazon ML Solutions Lab. بصفته عضوًا في ML Solutions Lab ، فهو يساعد في حل مشاكل الأعمال الحرجة لعملاء AWS باستخدام التعلم العميق. في أوقات فراغه ، يحب فرانسيسكو العزف على الموسيقى والغيتار ، ولعب كرة القدم مع بناته ، والاستمتاع بوقته مع أسرته.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي. يوهي ناكاياما هو مهندس تعليم عميق في Amazon ML Solutions Lab. إنه يعمل مع العملاء عبر قطاعات مختلفة لتسريع استخدامهم للذكاء الاصطناعي وخدمات سحابة AWS لحل تحديات أعمالهم. إنه مهتم بتطبيق تقنيات ML / AI على صناعة الفضاء.

قم بإنشاء وتدريب ونشر نموذج لغة مكون من مليار معلمة على تيرابايت من البيانات باستخدام TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي. ناتالي روشماير هي عالمة تطبيقية أولى في AWS ، حيث تساعد العملاء على تطوير تطبيقات التعلم العميق.

الطابع الزمني:

اكثر من التعلم الآلي من AWS