TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.

TensorFlow এবং Amazon SageMaker-এর সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন

ভাষা মডেলের ক্রমবর্ধমান আকার সাম্প্রতিক বছরগুলিতে প্রাকৃতিক ভাষা প্রক্রিয়াকরণের (NLP) সবচেয়ে বড় প্রবণতাগুলির মধ্যে একটি। 2018 সাল থেকে, আমরা BERT এবং এর ভেরিয়েন্ট, GPT-2, T-NLG, এবং GPT-3 (175 বিলিয়ন প্যারামিটার) সহ সর্বদা বৃহত্তর ভাষার মডেলগুলির অভূতপূর্ব বিকাশ এবং স্থাপনা দেখেছি।

এই মডেলগুলি সম্ভাব্য স্থাপত্য উদ্ভাবনের সীমানাকে ঠেলে দিয়েছে। বৃহৎ আকারের গভীর শিক্ষার মডেল, বিশেষ করে জেনারেটিভ প্রাক-প্রশিক্ষিত ট্রান্সফরমারের নতুন তরঙ্গ প্রশিক্ষণের সময় আমরা বিভিন্ন চ্যালেঞ্জের সম্মুখীন হই। এই চ্যালেঞ্জগুলির মধ্যে রয়েছে হার্ডওয়্যার সীমাবদ্ধতা এবং গণনা এবং দক্ষতার সাথে ট্রেড-অফ। মডেল এবং ডেটা সমান্তরালতার এই চ্যালেঞ্জগুলি কাটিয়ে উঠতে, AWS ক্ষমতার বিস্তৃত পরিসর সরবরাহ করে।

এই পোস্টে, আমরা দুটি প্রধান পন্থা প্রবর্তন করি: ডেটা সমান্তরালকরণ এবং মডেল সমান্তরাল ব্যবহার করে আমাজন সেজমেকার, এবং তাদের সুবিধা এবং অসুবিধা নিয়ে আলোচনা করুন।

মডেলটি

ভাষার মডেলের জন্য, আমরা কাগজে প্রবর্তিত ট্রান্সফরমার ব্যবহার করি মনোযোগ আপনার প্রয়োজন সব. ট্রান্সফরমারগুলি হল গভীর শিক্ষার মডেল যা ইচ্ছাকৃতভাবে ইনপুট এবং আউটপুটের মধ্যে বিশ্বব্যাপী নির্ভরতা আঁকতে একটি স্ব-মনোযোগ ব্যবস্থার উপর নির্ভর করে RNN-এর ত্রুটিগুলি এড়াতে ডিজাইন করা হয়েছে। ট্রান্সফরমার মডেল আর্কিটেকচার উল্লেখযোগ্যভাবে ভালো সমান্তরালকরণের অনুমতি দেয় এবং তুলনামূলকভাবে স্বল্প প্রশিক্ষণের সময়ে উচ্চ কর্মক্ষমতা অর্জন করতে পারে। ট্রান্সফরমারের সাফল্যের উপর নির্মিত, বিইআরটি, কাগজে প্রবর্তিত BERT: ভাষা বোঝার জন্য ডিপ বিডেরেশিয়াল ট্রান্সফর্মারগুলির প্রাক প্রশিক্ষণ, ভাষা উপস্থাপনার জন্য দ্বিমুখী প্রাক-প্রশিক্ষণ যোগ করা হয়েছে। ক্লোজ টাস্ক দ্বারা অনুপ্রাণিত হয়ে, 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

আপনার হাইপারপ্যারামিটারের উপর নির্ভর করে, আপনি এই মডেলটিকে হাজার হাজার প্যারামিটার থেকে বিলিয়ন প্যারামিটারে স্কেল করতে পারেন। বিলিয়ন-প্যারামিটার মডেলগুলির সাথে প্রাথমিক চ্যালেঞ্জ হল যে আপনি একটি উদাহরণে মডেলটিকে হোস্ট করতে পারবেন না এবং প্রশিক্ষণ এবং অনুমানের জন্য মডেলটিকে বিভিন্ন নোডে বিতরণ করতে হবে।

ডেটাসেট

আমাদের পরীক্ষায়, আমরা ব্যবহার করি পাইল ডেটাসেট. পাইল হল একটি 800 GiB ইংরেজি টেক্সট ডেটাসেট যা বড় মাপের ভাষা মডেল প্রশিক্ষণের জন্য ডিজাইন করা হয়েছে। এটি 22টি বৈচিত্র্যময় এবং উচ্চ-মানের ডেটাসেট থেকে তৈরি করা হয়েছে, যার মধ্যে প্রতিষ্ঠিত NLP ডেটাসেট এবং নতুন প্রবর্তিত উভয়ই রয়েছে৷

ডেটাসেটটি বই সহ বিভিন্ন ডেটা উত্স থেকে তৈরি করা হয়েছে; GitHub সংগ্রহস্থল; ওয়েব পেজ; চ্যাট লগ; এবং চিকিৎসা, পদার্থবিদ্যা, গণিত, কম্পিউটার বিজ্ঞান, এবং দর্শনের কাগজপত্র। বিশেষত, এটি নিম্নলিখিত উত্সগুলি ব্যবহার করে: 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, English Wikipedia, DM Mathematics, EuroParl, এনরন ইমেল কর্পাস, এবং NIH এক্সপোর্টার। এটিতে OpenWebText2 এবং BookCorpus2ও রয়েছে, যা যথাক্রমে মূল OpenWebText এবং BookCorpus ডেটাসেটের এক্সটেনশন। ডেটা উত্সের বৈচিত্র্য সাধারণ ক্রস-ডোমেন জ্ঞানকে উন্নত করতে পারে এবং ফলস্বরূপ ডাউনস্ট্রিম সাধারণীকরণ ক্ষমতা উন্নত করতে পারে।

এই ডেটাসেটের প্রাথমিক চ্যালেঞ্জ হল নিছক আকার; ডেটাসেটে 825 GiB পাঠ্য রয়েছে, যা 4.2 টিআইবি প্রিপ্রসেসড এবং সংকুচিত ডেটাপয়েন্টে অনুবাদ করে। মডেলগুলিকে প্রশিক্ষণ এবং হোস্ট করার ক্ষেত্রে আমরা যে চ্যালেঞ্জগুলির মুখোমুখি হই, একইভাবে এই ডেটাসেটের সাথে একটি মডেলকে একটি একক উদাহরণে প্রশিক্ষণ দিতে অনেক সময় লাগবে এবং এটি ব্যবহারিক নয়৷

আমাদের সমাধান হল ডেটাসেটকে আনুমানিক 1 GiB খণ্ডে বিভক্ত করা, বৈশিষ্ট্যগুলি লোড করা এবং প্রিপ্রসেস করা টেনসরফ্লো ডেটাসেট বস্তু, এবং তাদের মধ্যে সংরক্ষণ করুন আমাজন ইলাস্টিক ফাইল সার্ভিস (আমাজন ইএফএস)। টেনসরফ্লো ডেটাসেটগুলি একটি সহজে ব্যবহারযোগ্য এবং উচ্চ-পারফরম্যান্স ডেটা পাইপলাইন সরবরাহ করে যা আমাদের মডেলগুলির সাথে ভালভাবে সংহত করে। Amazon EFS হল একটি সহজ-ব্যবহারযোগ্য পরিষেবা যা আমাদেরকে একটি শেয়ার্ড ফাইল সিস্টেম তৈরি করতে সক্ষম করে যা ফাইলগুলি যুক্ত এবং মুছে ফেলার সাথে সাথে স্বয়ংক্রিয়ভাবে স্কেল করে। উপরন্তু, Amazon EFS প্রয়োজনের সময় উচ্চতর থ্রুপুট স্তরে বিস্ফোরিত হতে সক্ষম, যা আমাদের ডেটা এবং মডেল প্রশিক্ষণ পাইপলাইনে গুরুত্বপূর্ণ।

এর পরে, আমরা এই চ্যালেঞ্জগুলি মোকাবেলা করার জন্য বিতরণকৃত প্রশিক্ষণ কৌশলগুলির দিকে নজর দিই।

বিতরণ প্রশিক্ষণ

এই প্রকল্পে, আমরা দুটি চ্যালেঞ্জের মুখোমুখি হয়েছিলাম: মডেলের আকার এবং ডেটা ভলিউম স্কেলিং। মডেলের আকার এবং প্রশিক্ষণযোগ্য প্যারামিটারের সংখ্যা বাড়ানোর ফলে আরও ভাল নির্ভুলতা হতে পারে, তবে মডেলের একটি সীমা আছে যে আপনি একটি একক GPU মেমরিতে বা এমনকি একাধিক GPU তে একক উদাহরণে ফিট করতে পারেন। উপরন্তু, বড় মডেল মাপ প্রশিক্ষণ আরো সময় নেয়.

আপনি এই চ্যালেঞ্জ দুটি ভিন্ন উপায়ে মোকাবেলা করতে পারেন: ডেটা সমান্তরালতা এবং মডেল সমান্তরালতা। ডেটা সমান্তরালতার সাথে, আমরা প্রশিক্ষণের গতি বাড়ানোর জন্য বিভিন্ন ডিভাইসে একটি মিনি-ব্যাচের রেকর্ড বিতরণ করে স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট (SGD) সম্পাদন করি। যাইহোক, সমান্তরাল ডেটা প্রশিক্ষণ সমস্ত ডিভাইসের গ্রেডিয়েন্ট সহ মিনি-ব্যাচ গ্রেডিয়েন্ট গড় কম্পিউট করার অতিরিক্ত জটিলতার সাথে আসে, একটি ধাপ বলা হয় AllReduce, যা প্রশিক্ষণ ক্লাস্টার বড় হওয়ার সাথে সাথে কঠিন হয়ে যায়। ডেটা সমান্তরালতা ব্যবহার করার সময়, আমাদের অবশ্যই একটি ডিভাইসে মডেল এবং একটি একক ডেটাপয়েন্ট (সিপিইউ বা জিপিইউ) ফিট করতে সক্ষম হতে হবে, যা আমাদের পরীক্ষায় একটি সীমিত কারণ কারণ এত বড় মডেলের আকার একক GPU-এর মেমরির চেয়ে অনেক বড়। আকার

আরেকটি সমাধান হল মডেল সমান্তরালতা ব্যবহার করা, যা মডেলটিকে একাধিক ডিভাইসে বিভক্ত করে। মডেল সমান্তরালতা হল একটি মডেলকে একাধিক ডিভাইস বা নোডের মধ্যে বিভক্ত করার প্রক্রিয়া (যেমন GPU-সজ্জিত উদাহরণ) এবং GPU ব্যবহার সর্বাধিক করার জন্য এই ডিভাইসগুলি জুড়ে মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য একটি দক্ষ পাইপলাইন তৈরি করা।

ডেটা সমান্তরালকরণ

একাধিক জিপিইউ বা বিতরণ করা প্রশিক্ষণের জন্য ডেটা সমান্তরাল করা সবচেয়ে সাধারণ পদ্ধতি। আপনি আপনার ডেটা ব্যাচ করতে পারেন, এটি একাধিক ডিভাইসে পাঠাতে পারেন (প্রতিটি একটি প্রতিলিপি করা মডেল হোস্ট করে), তারপর ফলাফলগুলি একত্রিত করুন৷ আমরা ডেটা সমান্তরালকরণের জন্য দুটি প্যাকেজ নিয়ে পরীক্ষা করেছি: Horovod এবং the সেজমেকার ডেটা সমান্তরাল লাইব্রেরি বিতরণ করেছে.

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 ব্যবহার করে প্রশিক্ষিত করার জন্য মডেলটিকে যথেষ্ট ছোট রাখতে হাইপারপ্যারামিটারগুলি সামঞ্জস্য করতে পারি, অথবা আমরা একাধিক দৃষ্টান্ত জুড়ে একাধিক GPU-এর মধ্যে মডেলটিকে বিভক্ত করতে মডেল সমান্তরালতা ব্যবহার করতে পারি। একটি মডেলের প্রশিক্ষণযোগ্য প্যারামিটারের সংখ্যা বাড়ানোর ফলে আরও ভাল নির্ভুলতা হতে পারে, তবে আপনি একটি একক GPU মেমরিতে ফিট করতে পারেন এমন সর্বাধিক মডেলের আকারের একটি সীমা রয়েছে। আমরা আমাদের বৃহত্তর মডেলগুলিকে প্রশিক্ষণের জন্য SageMaker বিতরণকৃত মডেল সমান্তরাল লাইব্রেরি ব্যবহার করেছি। নিম্নরূপ পদক্ষেপ:

  1. এর সাথে লাইব্রেরি আমদানি করুন এবং শুরু করুন smp.init().
  2. Keras মডেলটি কেরাস মডেল ক্লাসের পরিবর্তে smp.DistributedModel থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া দরকার।
  3. সেট drop_remainder=True মধ্যে tf.Dataset.batch() ব্যাচের আকার সর্বদা মাইক্রোব্যাচের সংখ্যা দ্বারা বিভাজ্য হয় তা নিশ্চিত করার পদ্ধতি।
  4. ডাটা পাইপলাইনে র্যান্ডম অপারেশনের জন্য একই বীজ ব্যবহার করতে হবে: smp.dp_rank(), উদাহরণ স্বরূপ, shuffle(ds, seed=smp.dp_rank()). এটি বিভিন্ন মডেল পার্টিশন ধারণ করে এমন ডিভাইস জুড়ে ডেটা নমুনার ধারাবাহিকতা নিশ্চিত করে।
  5. ফরওয়ার্ড এবং পশ্চাদমুখী যুক্তি একটি ধাপ ফাংশন সঙ্গে থাকা প্রয়োজন smp.step প্রসাধন।
  6. স্টেপআউটপুট পদ্ধতি যেমন ব্যবহার করে মাইক্রোব্যাচ জুড়ে আউটপুটগুলিতে পোস্টপ্রসেসিং সম্পাদন করুন 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) 

SageMaker বিতরণকৃত মডেল সমান্তরাল লাইব্রেরির জন্য TensorFlow প্রশিক্ষণ স্ক্রিপ্ট সক্ষম করার জন্য একটি বিস্তারিত গাইডের জন্য, দেখুন একটি টেনসরফ্লো প্রশিক্ষণ স্ক্রিপ্ট পরিবর্তন করুন. PyTorch এর জন্য, পড়ুন একটি PyTorch প্রশিক্ষণ স্ক্রিপ্ট পরিবর্তন করুন.

সেজমেকার ডিবাগার

পূর্ববর্তী বিভাগে, আমরা আলোচনা করেছি কিভাবে মডেল এবং ডেটা সমান্তরালকরণ কৌশল ব্যবহার করে প্রশিক্ষণকে অপ্টিমাইজ করা যায়। সঙ্গে আমাজন সেজমেকার ডিবাগার, আমরা এখন প্রশিক্ষণের কতটা উন্নতি করেছে তা নির্ধারণ করতে আমাদের প্রশিক্ষণ থেকে কর্মক্ষমতা প্রোফাইলিং তথ্য ক্যাপচার করতে পারি। ডিফল্টরূপে, ডিবাগার 500 মিলিসেকেন্ডের স্যাম্পলিং ব্যবধানে GPU, CPU ব্যবহার, মেমরি, নেটওয়ার্ক এবং I/O এর মতো প্রতিটি সেজমেকার প্রশিক্ষণ কাজের জন্য সিস্টেম মেট্রিক্স ক্যাপচার করে। আমরা নিম্নলিখিত হিসাবে ডেটা অ্যাক্সেস করতে পারি:

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()

ডিবাগার ইউটিলিটি প্রদান করে ঠাহর করা বিভিন্ন উপায়ে প্রোফাইলিং ডেটা। নিম্নলিখিত উদাহরণে, আমরা Horovod ব্যবহার করে মাল্টি-জিপিইউ প্রশিক্ষণ কাজের জন্য মোট GPU এবং CPU ব্যবহারের পাশাপাশি I/O অপেক্ষার সময় দেখতে পাচ্ছি। এই গ্রাফগুলি তৈরি করতে, আমরা নিম্নলিখিত কোডটি চালাই:

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% এর মধ্যে ওঠানামা করে এবং কম GPU ব্যবহার সহ উচ্চ I/O অপেক্ষার সময় I/O বাধার একটি সূচক। অধিকন্তু, মোট CPU ব্যবহার কখনই 70% এর বেশি হয় না, যার মানে আমরা কর্মী প্রক্রিয়ার সংখ্যা বাড়িয়ে ডেটা প্রিপ্রসেসিং উন্নত করতে পারি।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.

আমরা Horovod থেকে SageMaker বিতরণ করা ডেটা সমান্তরাল লাইব্রেরিতে স্যুইচ করে কর্মক্ষমতা উন্নত করতে পারি। নিম্নলিখিত গ্রাফগুলিতে, আমরা দেখতে পাচ্ছি যে GPU গুলি আরও দক্ষতার সাথে ব্যবহার করা হয়েছে এবং শুধুমাত্র অল্প সময়ের জন্য কম ব্যবহারে নেমে যাচ্ছে।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.

প্রশিক্ষণের অবকাঠামো

মডেলদের প্রশিক্ষণের জন্য, আমরা SageMaker প্রশিক্ষণের কাজ ব্যবহার করে 10 ml.p3.16x বড় উদাহরণ ব্যবহার করেছি। সেজমেকার অবকাঠামো পরিচালনার প্রয়োজন ছাড়াই মেশিন লার্নিং (এমএল) মডেলগুলিকে প্রশিক্ষণ এবং টিউন করার সময় এবং খরচ কমিয়ে দেয়। SageMaker-এর সাহায্যে, আপনি প্রশিক্ষণ পরীক্ষাগুলি পরিচালনা এবং ট্র্যাক করতে অন্তর্নির্মিত সরঞ্জামগুলি ব্যবহার করে ML মডেলগুলিকে সহজেই প্রশিক্ষিত এবং টিউন করতে পারেন, স্বয়ংক্রিয়ভাবে সর্বোত্তম হাইপারপ্যারামিটার নির্বাচন করতে পারেন, প্রশিক্ষণের কাজগুলি ডিবাগ করতে পারেন এবং সিস্টেম সংস্থান যেমন GPUs, CPUs এবং নেটওয়ার্ক ব্যান্ডউইথের ব্যবহার নিরীক্ষণ করতে পারেন৷ ডেটা আমাজন ইএফএস-এ হোস্ট করা হয়েছিল, যা পরিচালনা বা বিধানের প্রয়োজন ছাড়াই ফাইলগুলি যুক্ত এবং সরানোর সাথে সাথে আমাদের বৃদ্ধি এবং সঙ্কুচিত হতে সক্ষম করে। আমাদের প্রাথমিক উদ্দেশ্য ছিল প্রশিক্ষণের গতি উন্নত করা এবং খরচ কমানো।

মডেল মাপযোগ্যতা

যদিও এই অবকাঠামোটি প্রাথমিকভাবে ভাষা তৈরির জন্য ব্যবহার করা হয়, GPT আর্কিটেকচার এবং পাইল ডেটাসেটের সাথে, আপনি এই কৌশলগুলিকে বড় আকারের ট্রান্সফরমার মডেলগুলিকে প্রশিক্ষণ দিতে ব্যবহার করতে পারেন, যা NLP এর বাইরেও অনেক ডোমেনে কার্যকর। মেশিন লার্নিংয়েই, অনেক কম্পিউটার ভিশন টাস্ক এখন বড়-প্যারামিটার (ট্রান্সফরমার) আর্কিটেকচারের মাধ্যমে সমাধান করা হয় যেখানে তারা উপস্থাপনা শেখার মতো কাজগুলিতে ঐতিহ্যবাহী সিএনএন (কনভোলিউশনাল নিউরাল নেটওয়ার্ক) কে ছাড়িয়ে যেতে দেখা গেছে (দেখুন স্ব-তত্ত্বাবধানে ট্রান্সফরমার এবং 10 গুণ বেশি দক্ষ প্রশিক্ষণের মাধ্যমে কম্পিউটার দৃষ্টিতে শিল্পের অবস্থার উন্নতি করা) এবং টেক্সটে চিত্রের বড় আকারের ম্যাপিং (যেমন ক্লিপ) বড়-প্যারামিটার মডেলগুলিও ক্ষেত্রগুলিতে জীবন বিজ্ঞানে নতুন ভিত্তি তৈরি করছে প্রোটিন গঠন বিশ্লেষণ এবং মেডিকেল ইমেজ ডেটা বিশ্লেষণ.

বিতরণ করা প্রশিক্ষণ এবং বড় মডেল পরিচালনার জন্য আমরা এই পোস্টে যে সমাধানগুলি বিস্তারিত করেছি তা এই ডোমেনের যে কোনও মডেলের ক্ষেত্রেও প্রযোজ্য হওয়া উচিত।

বাণিজ্য বন্ধ

বৃহৎ মাপের ভাষা মডেল প্রশিক্ষণের ঝুঁকি সম্পর্কে গবেষণা সম্প্রদায়ের মধ্যে একটি চলমান আলোচনা হয়েছে, এবং তাদের বিকাশের সাথে যুক্ত সম্ভাব্য ঝুঁকি এবং এই ঝুঁকিগুলি হ্রাস করার কৌশলগুলির বিষয়ে যথেষ্ট চিন্তাভাবনা করা হয়েছে কিনা, যার মধ্যে কিছু আর্থিক এবং পরিবেশগত খরচ। অনুযায়ী ক কাগজ ACM-এ প্রকাশিত, GPU-তে একটি একক BERT বেস মডেল (হাইপারপ্যারামিটার টিউনিং ছাড়া) প্রশিক্ষণের জন্য ট্রান্স-আমেরিকান ফ্লাইটের মতো শক্তির প্রয়োজন হয় বলে অনুমান করা হয়েছিল। পরিবেশগত প্রভাবগুলি মডেলের আকারের সাথে স্কেল করে, এবং এই ধরনের মডেলগুলিকে দক্ষতার সাথে সূক্ষ্ম-টিউন করতে সক্ষম হওয়া সম্ভাব্যভাবে উল্লেখযোগ্যভাবে নির্গমন হ্রাস করতে পারে। AWS সম্প্রতি একটি নতুন চালু করেছে গ্রাহক কার্বন ফুটপ্রিন্ট টুল, স্থায়িত্ব বৃদ্ধি এবং কার্বন নিঃসরণ কমানোর জন্য Amazon-এর প্রচেষ্টার অংশ হিসাবে বিনা খরচে সমস্ত AWS গ্রাহকদের জন্য উপলব্ধ৷ AWS ক্লাউডে অ্যাপ্লিকেশন চালানোর ফলে কার্বন ফুটপ্রিন্ট সম্ভাব্যভাবে হ্রাস পেতে পারে (যখন এন্টারপ্রাইজ ডেটা সেন্টারের সাথে তুলনা করা হয়েছিল যা জরিপ করা হয়েছিল একটি 2019 রিপোর্ট).

উপসংহার

এই পোস্টটি একটি সমাধান প্রদর্শন করেছে যা SageMaker ব্যবহার করে AWS ক্লাউডে এক বিলিয়ন প্যারামিটার সহ ভাষার মডেলগুলির সূক্ষ্ম-টিউনিংকে সহজতর করে।

SageMaker-এর সাথে মডেল সমান্তরাল সম্পর্কে আরও তথ্যের জন্য, পড়ুন Amazon SageMaker-এ মডেলের সমান্তরাল সংযোজন এবং Hugging Face সহ 175+ বিলিয়ন প্যারামিটার NLP মডেলকে প্রশিক্ষণ দিন এবং কিভাবে সুপ্ত স্পেস অ্যামাজন সেজমেকার মডেলের সমান্তরাল লাইব্রেরি ব্যবহার করে বৃহৎ আকারের ট্রান্সফরমারগুলির সীমানাকে ঠেলে দেয়.

আপনি যদি আপনার পণ্য এবং প্রক্রিয়াগুলিতে আপনার ML-এর ব্যবহারকে ত্বরান্বিত করতে সহায়তা করতে চান তবে অনুগ্রহ করে যোগাযোগ করুন অ্যামাজন এমএল সলিউশন ল্যাব.


লেখক সম্পর্কে

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.সিয়া গোলামী তিনি আমাজন এমএল সলিউশন ল্যাবের একজন সিনিয়র ডেটা সায়েন্টিস্ট, যেখানে তিনি বিভিন্ন শিল্পে গ্রাহকদের জন্য এআই/এমএল সমাধান তৈরি করেন। তিনি প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) এবং গভীর শিক্ষার বিষয়ে উত্সাহী। কাজের বাইরে, সিয়া প্রকৃতিতে সময় কাটানো এবং টেনিস খেলা উপভোগ করে।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.মেহেদী নূরীতিনি আমাজন এমএল সলিউশন ল্যাবের একজন ম্যানেজার এবং একজন সিনিয়র অ্যাপ্লাইড সায়েন্টিস্ট, যেখানে তিনি বিভিন্ন শিল্পের গ্রাহকদের সাথে কাজ করেন এবং তাদের ক্লাউড মাইগ্রেশন যাত্রাকে ত্বরান্বিত করতে এবং অত্যাধুনিক সমাধান ব্যবহার করে তাদের এমএল সমস্যা সমাধান করতে সাহায্য করেন। প্রযুক্তি

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.মুহিউন কিম অ্যামাজন মেশিন লার্নিং সলিউশন ল্যাবের একজন ডেটা সায়েন্টিস্ট। তিনি মেশিন লার্নিং এবং ডিপ লার্নিং প্রয়োগ করে গ্রাহকের বিভিন্ন ব্যবসায়িক সমস্যা সমাধান করেন এবং তাদের দক্ষ হতেও সাহায্য করেন।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই. ড্যানি বার্ড অ্যামাজন এমএল সলিউশন ল্যাবের একজন ফলিত বিজ্ঞানী। ল্যাবে তিনি গ্রাহকদের কম্পিউটার ভিশন থেকে রিইনফোর্সমেন্ট লার্নিং পর্যন্ত এমএল বিশেষত্বে উন্নত ML সমাধান তৈরি করতে সাহায্য করেছেন। তিনি প্রযুক্তিকে এগিয়ে নিয়ে যাওয়ার এবং পথ ধরে AWS পণ্যগুলি থেকে নতুন সম্ভাবনা আনলক করার বিষয়ে উত্সাহী।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই.ফ্রান্সিসকো ক্যালডেরন রদ্রিগেজ অ্যামাজন এমএল সলিউশন ল্যাবে একজন ডেটা সায়েন্টিস্ট। এমএল সলিউশন ল্যাবের একজন সদস্য হিসেবে, তিনি গভীর শিক্ষা ব্যবহার করে AWS গ্রাহকদের জন্য গুরুত্বপূর্ণ ব্যবসায়িক সমস্যা সমাধানে সাহায্য করেন। তার অবসর সময়ে, ফ্রান্সিসকো সঙ্গীত এবং গিটার বাজাতে, তার মেয়েদের সাথে ফুটবল খেলতে এবং তার পরিবারের সাথে সময় উপভোগ করতে পছন্দ করে।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই. ইয়োহেই নাকায়ামা অ্যামাজন এমএল সলিউশন ল্যাবের একজন ডিপ লার্নিং আর্কিটেক্ট। কৃত্রিম বুদ্ধিমত্তা এবং AWS ক্লাউড পরিষেবাগুলির ব্যবহারকে ত্বরান্বিত করতে তিনি বিভিন্ন উল্লম্ব জুড়ে গ্রাহকদের সাথে কাজ করেন তাদের ব্যবসায়িক চ্যালেঞ্জগুলি সমাধান করতে। তিনি মহাকাশ শিল্পে এমএল/এআই প্রযুক্তি প্রয়োগ করতে আগ্রহী।

TensorFlow এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্সের সাহায্যে টেরাবাইট ডেটাতে বিলিয়ন-প্যারামিটার ভাষার মডেল তৈরি করুন, প্রশিক্ষণ দিন এবং স্থাপন করুন৷ উল্লম্ব অনুসন্ধান. আই. নাথালি রাউশমায়ার AWS-এর একজন সিনিয়র ফলিত বিজ্ঞানী, যেখানে তিনি গ্রাহকদের গভীর শিক্ষার অ্যাপ্লিকেশন বিকাশে সহায়তা করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

পিজিএ ট্যুরের জেনারেটিভ এআই ভার্চুয়াল সহকারীর যাত্রা, ধারণা থেকে বিকাশ পর্যন্ত প্রোটোটাইপ পর্যন্ত | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1956285
সময় স্ট্যাম্প: মার্চ 14, 2024