با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.

با TensorFlow و Amazon SageMaker یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید.

افزایش اندازه مدل‌های زبان یکی از بزرگترین روندها در پردازش زبان طبیعی (NLP) در سال‌های اخیر بوده است. از سال 2018، ما شاهد توسعه و استقرار بی‌سابقه مدل‌های زبانی بزرگ‌تر، از جمله BERT و انواع آن، GPT-2، T-NLG و GPT-3 (175 میلیارد پارامتر) بوده‌ایم.

این مدل ها مرزهای نوآوری های معماری ممکن را جابجا کرده اند. ما هنگام آموزش مدل های یادگیری عمیق در مقیاس بزرگ، به ویژه موج جدید ترانسفورماتورهای از پیش آموزش دیده مولد، با چالش های متعددی روبرو هستیم. این چالش ها شامل محدودیت های سخت افزاری و معاوضه با محاسبات و کارایی است. برای غلبه بر این چالش‌های موازی مدل و داده، AWS طیف وسیعی از قابلیت‌ها را ارائه می‌دهد.

در این پست دو رویکرد اصلی را معرفی می کنیم: موازی سازی داده ها و موازی سازی مدل ها با استفاده از آمازون SageMaker، و در مورد جوانب مثبت و منفی آنها صحبت کنید.

مدل

برای مدل زبان، از ترانسفورماتورهای معرفی شده در مقاله استفاده می کنیم توجه تنها چیزی است که نیاز دارید. ترانسفورماتورها مدل‌های یادگیری عمیقی هستند که برای اجتناب عمدی از دام‌های RNN با تکیه بر مکانیزم توجه به خود برای ایجاد وابستگی جهانی بین ورودی و خروجی طراحی شده‌اند. معماری مدل ترانسفورماتور امکان موازی سازی بسیار بهتری را فراهم می کند و می تواند در زمان آموزش نسبتاً کوتاه به عملکرد بالایی دست یابد. ساخته شده بر اساس موفقیت ترانسفورماتور، 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

بسته به فراپارامترهای خود، می توانید این مدل را از هزاران پارامتر به میلیاردها پارامتر مقیاس کنید. چالش اصلی با مدل‌های میلیارد پارامتری این است که شما نمی‌توانید مدل را در یک نمونه میزبانی کنید و برای آموزش و استنتاج باید مدل را در چندین گره توزیع کنید.

مجموعه داده

در آزمایشات خود از مجموعه داده شمع. Pile یک مجموعه داده متنی انگلیسی 800 گیگابایتی است که برای آموزش مدل های زبانی در مقیاس بزرگ طراحی شده است. این مجموعه از 22 مجموعه داده متنوع و با کیفیت بالا، از جمله مجموعه داده های NLP ایجاد شده و آنهایی که به تازگی معرفی شده اند، ایجاد شده است.

مجموعه داده از منابع مختلف داده، از جمله کتاب، ایجاد شده است. مخازن GitHub؛ صفحات وب؛ سیاهههای مربوط به چت؛ و مقالات پزشکی، فیزیک، ریاضی، علوم کامپیوتر و فلسفه. به طور خاص، از منابع زیر استفاده می کند: Pile-CC، PubMed Central، ArXiv، GitHub، پروژه FreeLaw، Stack Exchange، اداره ثبت اختراع و علائم تجاری ایالات متحده، PubMed، Ubuntu، IRC، HackerNews، YouTube، PhilPapers، Books3، Project Gutenberg ( PG-19)، OpenSubtitles، Wikipedia انگلیسی، DM Mathematics، EuroParl، Enron Emails Corpus و NIH ExPorter. همچنین شامل OpenWebText2 و BookCorpus2 است که به ترتیب پسوند مجموعه داده های OpenWebText و BookCorpus اصلی هستند. تنوع در منابع داده می تواند دانش عمومی بین دامنه ای را بهبود بخشد و در نتیجه قابلیت های تعمیم پایین دستی را بهبود بخشد.

چالش اصلی با این مجموعه داده اندازه خالص است. مجموعه داده دارای 825 گیگابایت متن است که به 4.2 TiB از نقاط داده از پیش پردازش شده و فشرده تبدیل می شود. مشابه چالش‌هایی که در آموزش و میزبانی مدل‌ها با آن روبرو هستیم، آموزش یک مدل با این مجموعه داده در یک نمونه زمان زیادی می‌برد و عملی نیست.

راه حل ما این است که مجموعه داده را به تکه های تقریباً 1 گیگابایتی از داده ها تقسیم کنیم، ویژگی ها را بارگیری و پیش پردازش کنیم. مجموعه داده TensorFlow اشیاء و ذخیره آنها در سرویس فایل الاستیک آمازون (Amazon EFS). مجموعه داده های TensorFlow یک خط لوله داده با کاربری آسان و با کارایی بالا را ارائه می دهد که به خوبی با مدل های ما ادغام می شود. Amazon EFS یک سرویس آسان برای استفاده است که ما را قادر می سازد یک سیستم فایل مشترک بسازیم که با اضافه شدن و حذف فایل ها به طور خودکار مقیاس می شود. علاوه بر این، آمازون EFS قادر است در صورت نیاز به سطوح توان بالاتری برسد، که در خط لوله آموزش داده‌ها و مدل‌های ما حیاتی است.

در مرحله بعد، ما به استراتژی های آموزشی توزیع شده برای مقابله با این چالش ها نگاه می کنیم.

آموزش توزیع شده

در این پروژه با دو چالش مواجه شدیم: مقیاس بندی اندازه مدل و حجم داده. افزایش اندازه مدل و تعداد پارامترهای قابل آموزش ممکن است منجر به دقت بهتر شود، اما محدودیتی برای مدل وجود دارد که می‌توانید آن را در یک حافظه واحد گرافیکی یا حتی چندین GPU در یک نمونه قرار دهید. علاوه بر این، اندازه‌های مدل بزرگ‌تر برای آموزش زمان بیشتری می‌طلبد.

شما می توانید با این چالش ها به دو روش مختلف مقابله کنید: موازی سازی داده ها و موازی سازی مدل. با موازی سازی داده ها، ما نزول گرادیان تصادفی (SGD) را با توزیع رکوردهای یک دسته کوچک روی دستگاه های مختلف انجام می دهیم تا سرعت آموزش را افزایش دهیم. با این حال، آموزش داده‌های موازی با پیچیدگی اضافی محاسبه میانگین گرادیان دسته‌ای کوچک با گرادیان‌های همه دستگاه‌ها همراه است، مرحله‌ای به نام AllReduce، که با بزرگ شدن خوشه آموزشی سخت تر می شود. در حالی که از موازی سازی داده ها استفاده می کنیم، باید بتوانیم مدل و یک نقطه داده را در یک دستگاه (CPU یا GPU) جای دهیم، که این یک عامل محدود کننده در آزمایشات ما است زیرا اندازه چنین مدل بزرگی بسیار بزرگتر از حافظه GPU واحد است. اندازه.

راه حل دیگر استفاده از موازی سازی مدل است که مدل را بر روی چندین دستگاه تقسیم می کند. موازی سازی مدل، فرآیند تقسیم یک مدل بین چندین دستگاه یا گره (مانند نمونه های مجهز به GPU) و ایجاد یک خط لوله کارآمد برای آموزش مدل در سراسر این دستگاه ها برای به حداکثر رساندن استفاده از GPU است.

موازی سازی داده ها

موازی کردن داده ها رایج ترین رویکرد برای چندین GPU یا آموزش توزیع شده است. می‌توانید داده‌های خود را دسته‌بندی کنید، آن‌ها را به چندین دستگاه ارسال کنید (هر کدام یک مدل تکراری را میزبانی می‌کنند)، سپس نتایج را جمع‌آوری کنید. ما با دو بسته برای موازی سازی داده ها آزمایش کردیم: Horovod و the SageMaker کتابخانه موازی داده را توزیع کرد.

Horovod یک چارچوب آموزشی یادگیری عمیق توزیع شده برای TensorFlow، Keras، PyTorch و Apache MXNet است. برای استفاده از هوروود مراحل زیر را طی کردیم:

  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 آموزش ببیند، یا می‌توانیم از موازی‌سازی مدل برای تقسیم مدل بین چندین GPU در چندین نمونه استفاده کنیم. افزایش تعداد پارامترهای قابل آموزش یک مدل می تواند منجر به دقت بهتر شود، اما حداکثر اندازه مدلی که می توانید در یک حافظه GPU قرار دهید محدودیتی وجود دارد. ما از کتابخانه موازی مدل توزیع شده SageMaker برای آموزش مدل های بزرگتر خود استفاده کردیم. مراحل به شرح زیر است:

  1. وارد کردن و مقداردهی اولیه کتابخانه با smp.init().
  2. مدل Keras به جای کلاس Keras Model باید از smp.DistributedModel به ارث ببرد.
  3. تنظیم drop_remainder=True در tf.Dataset.batch() روشی برای اطمینان از اینکه اندازه دسته همیشه بر تعداد میکروبچ ها تقسیم می شود.
  4. عملیات تصادفی در خط لوله داده همگی باید از یک دانه استفاده کنند: smp.dp_rank()، به عنوان مثال، shuffle(ds, seed=smp.dp_rank()). این یکپارچگی نمونه‌های داده را در دستگاه‌هایی که پارتیشن‌های مدل متفاوتی را نگهداری می‌کنند، تضمین می‌کند.
  5. منطق رو به جلو و عقب باید در یک تابع گام با smp.step تزیین.
  6. انجام پس پردازش بر روی خروجی ها در میکروبچ با استفاده از روش های 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 Debugger

در بخش های قبلی، نحوه بهینه سازی آموزش با استفاده از تکنیک های موازی سازی مدل و داده ها را مورد بحث قرار دادیم. با دیباگر Amazon SageMaker، اکنون می‌توانیم اطلاعات نمایه عملکرد را از دوره‌های آموزشی خود دریافت کنیم تا تعیین کنیم که آموزش چقدر بهبود یافته است. به‌طور پیش‌فرض، Debugger معیارهای سیستم را برای هر کار آموزشی SageMaker مانند GPU، استفاده از CPU، حافظه، شبکه و I/O در فاصله نمونه‌گیری 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()

Debugger ابزارهای کمکی را برای تجسم داده های پروفایل به روش های مختلف در مثال زیر، کل استفاده از GPU و CPU و همچنین زمان انتظار I/O برای کار آموزش چند 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 )

استفاده از GPU اغلب بین 0 تا 100% در نوسان است و زمان انتظار I/O بالا با استفاده کم GPU نشانگر تنگنای I/O است. علاوه بر این، کل استفاده از CPU هرگز از 70٪ تجاوز نمی کند، به این معنی که ما می توانیم پیش پردازش داده ها را با افزایش تعداد فرآیندهای کارگر بهبود دهیم.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.

ما می توانیم با تغییر از Horovod به کتابخانه موازی داده توزیع شده SageMaker عملکرد را بهبود ببخشیم. در نمودارهای زیر می بینیم که GPU ها کارآمدتر استفاده می شوند و فقط برای مدت زمان کوتاهی به میزان کم استفاده می شوند.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.

زیرساخت های آموزشی

برای آموزش مدل ها، ما از 10 نمونه میلی لیتر.p3.16xlarge با استفاده از کار آموزشی SageMaker استفاده کردیم. SageMaker زمان و هزینه آموزش و تنظیم مدل‌های یادگیری ماشین (ML) را بدون نیاز به مدیریت زیرساخت کاهش می‌دهد. با SageMaker، می‌توانید به راحتی مدل‌های ML را با استفاده از ابزارهای داخلی برای مدیریت و ردیابی آزمایش‌های آموزشی آموزش دهید و تنظیم کنید، به طور خودکار ابرپارامترهای بهینه را انتخاب کنید، کارهای آموزشی اشکال‌زدایی را انجام دهید، و استفاده از منابع سیستم مانند GPU، CPU و پهنای باند شبکه را نظارت کنید. داده‌ها در آمازون EFS میزبانی می‌شد، که ما را قادر می‌سازد تا با افزودن و حذف فایل‌ها بدون نیاز به مدیریت یا تهیه، رشد کرده و کوچک شویم. هدف اصلی ما بهبود سرعت تمرین و کاهش هزینه ها بود.

مقیاس پذیری مدل

اگرچه این زیرساخت عمدتاً برای تولید زبان استفاده می‌شود، اما با معماری GPT و مجموعه داده Pile، می‌توانید از این تکنیک‌ها برای آموزش مدل‌های ترانسفورماتور در مقیاس بزرگ استفاده کنید که در بسیاری از حوزه‌های فراتر از NLP مفید است. در خود یادگیری ماشینی، بسیاری از وظایف بینایی کامپیوتری اکنون با معماری‌های با پارامترهای بزرگ (ترانسفورماتور) حل می‌شوند، جایی که نشان داده شده است که در کارهایی مانند یادگیری بازنمایی، از CNN‌های سنتی (شبکه عصبی کانولوشنال) بهتر عمل می‌کنند. ارتقای وضعیت هنر در بینایی کامپیوتر با ترانسفورماتورهای خود نظارت و آموزش 10 برابر کارآمدتر) و نگاشت در مقیاس بزرگ تصاویر به متن (مانند کلیپ). مدل‌های با پارامترهای بزرگ نیز در حال گشودن زمین‌های جدیدی در علوم زیستی در زمینه‌هایی مانند این هستند تجزیه و تحلیل ساختار پروتئین و تجزیه و تحلیل داده های تصویر پزشکی.

راه حل هایی که در این پست برای آموزش توزیع شده و مدیریت مدل های بزرگ توضیح می دهیم باید برای مدل های هر یک از این حوزه ها نیز اعمال شود.

مبادلات

در مورد خطرات آموزش مدل‌های زبانی در مقیاس بزرگ، بحث‌های مداومی در جامعه پژوهشی وجود داشته است، و اینکه آیا فکر کافی در مورد خطرات احتمالی مرتبط با توسعه آنها و استراتژی‌هایی برای کاهش این خطرات، که برخی از آنها شامل مسائل مالی و هزینه های زیست محیطی با توجه به الف مقاله که در ACM منتشر شده است، آموزش یک مدل پایه تک BERT (بدون تنظیم فراپارامتر) بر روی پردازنده‌های گرافیکی به اندازه یک پرواز ترانس آمریکایی به انرژی نیاز دارد. اثرات زیست محیطی با اندازه مدل مقیاس می شود و توانایی تنظیم دقیق چنین مدل هایی به طور بالقوه می تواند انتشار گازهای گلخانه ای را به میزان قابل توجهی کاهش دهد. AWS اخیراً یک محصول جدید راه اندازی کرده است ابزار ردپای کربن مشتریبه عنوان بخشی از تلاش‌های آمازون برای افزایش پایداری و کاهش انتشار کربن، در دسترس همه مشتریان AWS بدون هیچ هزینه‌ای است. اجرای برنامه های کاربردی در AWS Cloud به طور بالقوه می تواند ردپای کربن را کاهش دهد (در مقایسه با مراکز داده سازمانی که در یک گزارش 2019).

نتیجه

این پست راه حلی را نشان می دهد که تنظیم دقیق مدل های زبان را با یک میلیارد پارامتر در AWS Cloud با استفاده از SageMaker تسهیل می کند.

برای اطلاعات بیشتر در مورد موازی سازی مدل با SageMaker، مراجعه کنید آموزش بیش از 175 میلیارد مدل NLP با پارامترهای اضافه شده به موازات مدل و صورت در آغوش گرفتن در Amazon SageMaker و چگونه فضای پنهان از کتابخانه موازی مدل آمازون SageMaker برای فشار دادن مرزهای ترانسفورماتورهای مقیاس بزرگ استفاده کرد.

اگر برای تسریع استفاده از ML در محصولات و فرآیندهای خود کمک می‌خواهید، لطفاً با آن تماس بگیرید آزمایشگاه راه حل های آمازون ام ال.


درباره نویسنده

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.سیا غلامی یک دانشمند ارشد داده در آزمایشگاه راه حل های آمازون ML است، جایی که راه حل های AI/ML را برای مشتریان در صنایع مختلف می سازد. او مشتاق پردازش زبان طبیعی (NLP) و یادگیری عمیق است. سیا خارج از محل کار از گذراندن وقت در طبیعت و بازی تنیس لذت می برد.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.مهدی نورییک مدیر و یک دانشمند ارشد کاربردی در آزمایشگاه راه حل های آمازون ML است، جایی که با مشتریان در صنایع مختلف کار می کند و به آنها کمک می کند تا سفر مهاجرت ابری خود را تسریع کنند و مشکلات ML خود را با استفاده از راه حل های پیشرفته و پیشرفته حل کنند. فن آوری ها

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.موهیون کیم دانشمند داده در آزمایشگاه راه حل های یادگیری ماشین آمازون است. او مشکلات مختلف تجاری مشتریان را با استفاده از یادگیری ماشینی و یادگیری عمیق حل می کند و همچنین به آنها کمک می کند تا مهارت پیدا کنند.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai. دنی برد یک دانشمند کاربردی در آزمایشگاه راه حل های آمازون ML است. او در آزمایشگاه به مشتریان کمک کرد تا راه‌حل‌های پیشرفته ML را توسعه دهند، در تخصص‌های ML از بینایی رایانه تا یادگیری تقویتی. او مشتاق پیشبرد فناوری و کشف پتانسیل جدید از محصولات AWS در طول مسیر است.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai.فرانسیسکو کالدرون رودریگز یک دانشمند داده در آزمایشگاه راه حل های آمازون ML است. او به عنوان یکی از اعضای آزمایشگاه راه حل های ML، با استفاده از یادگیری عمیق به حل مشکلات مهم تجاری برای مشتریان AWS کمک می کند. فرانسیسکو در اوقات فراغت خود دوست دارد موسیقی و گیتار بزند، با دخترانش فوتبال بازی کند و از اوقات فراغت با خانواده اش لذت ببرد.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai. یوهی ناکایاما یک معمار یادگیری عمیق در آزمایشگاه راه حل های آمازون ML است. او با مشتریان در بخش‌های مختلف کار می‌کند تا استفاده آنها از هوش مصنوعی و خدمات ابری AWS را برای حل چالش‌های تجاری آنها تسریع بخشد. او علاقه مند به استفاده از فناوری های ML/AI در صنعت فضایی است.

با TensorFlow و Amazon SageMaker PlatoBlockchain Data Intelligence یک مدل زبان میلیارد پارامتری را روی ترابایت داده ایجاد، آموزش و استقرار دهید. جستجوی عمودی Ai. ناتالی راوشمایر یک دانشمند ارشد کاربردی در AWS است، جایی که به مشتریان کمک می کند تا برنامه های یادگیری عمیق را توسعه دهند.

تمبر زمان:

بیشتر از آموزش ماشین AWS