TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.

TensorFlow 및 Amazon SageMaker를 사용하여 테라바이트 규모의 데이터에 대한 XNUMX억 매개변수 언어 모델 생성, 교육 및 배포

언어 모델의 크기가 증가하는 것은 최근 몇 년 동안 자연어 처리(NLP)의 가장 큰 추세 중 하나였습니다. 2018년부터 우리는 BERT 및 그 변종, GPT-2, T-NLG 및 GPT-3(175억 개의 매개변수)을 포함하여 더 큰 언어 모델의 전례 없는 개발 및 배포를 목격했습니다.

이러한 모델은 가능한 아키텍처 혁신의 한계를 뛰어 넘었습니다. 대규모 딥 러닝 모델, 특히 생성적 사전 훈련된 변압기의 새로운 물결을 훈련할 때 몇 가지 문제에 직면합니다. 이러한 문제에는 하드웨어 제한 및 계산 및 효율성과의 절충이 포함됩니다. 모델 및 데이터 병렬 처리의 이러한 문제를 극복하기 위해 AWS는 다양한 기능을 제공합니다.

이 게시물에서는 데이터 병렬화와 모델 병렬화의 두 가지 주요 접근 방식을 소개합니다. 아마존 세이지 메이커, 그리고 장단점에 대해 토론합니다.

모델

언어 모델의 경우 논문에 소개된 Transformers를 사용합니다. 주의 만 있으면됩니다. 트랜스포머는 입력과 출력 사이의 전역 종속성을 끌어내기 위해 self-attention 메커니즘에 의존하여 RNN의 함정을 의도적으로 피하도록 설계된 딥 러닝 모델입니다. Transformer 모델 아키텍처는 훨씬 더 나은 병렬화를 허용하고 비교적 짧은 훈련 시간에 고성능을 달성할 수 있습니다. 백서에 소개된 Transformers, BERT의 성공을 기반으로 합니다. BERT : 언어 이해를위한 딥 양방향 트랜스포머의 사전 교육, 언어 표현을 위한 양방향 사전 교육이 추가되었습니다. Cloze 작업에서 영감을 받은 BERT는 MLM(masked Language Modeling)으로 사전 훈련되었으며, 여기서 모델은 무작위로 마스킹된 토큰의 원래 단어를 복구하는 방법을 학습합니다. 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

그런 다음 다중 헤드 self-attention 레이어와 레이어 정규화 및 드롭아웃이 뒤따르는 단순 완전 연결 피드포워드 네트워크라는 두 개의 하위 레이어가 있는 변환기 디코더 블록을 정의합니다.

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

하이퍼파라미터에 따라 수천 개의 파라미터에서 수십억 개의 파라미터로 이 모델을 확장할 수 있습니다. XNUMX억 매개변수 모델의 주요 문제는 한 인스턴스에서 모델을 호스팅할 수 없고 훈련 및 추론을 위해 모델을 여러 노드에 배포해야 한다는 것입니다.

데이터 세트

우리의 실험에서 우리는 더미 데이터 세트. Pile은 대규모 언어 모델 교육을 위해 설계된 800GiB 영어 텍스트 데이터 세트입니다. 기존 NLP 데이터 세트와 새로 도입된 데이터 세트를 모두 포함하여 22개의 다양하고 고품질 데이터 세트로 생성됩니다.

데이터 세트는 책을 포함한 다양한 데이터 소스에서 생성됩니다. GitHub 저장소; 웹페이지; 채팅 로그; 의학, 물리학, 수학, 컴퓨터 과학, 철학 논문. 특히 Pile-CC, PubMed Central, ArXiv, GitHub, FreeLaw Project, Stack Exchange, 미국 특허청, PubMed, Ubuntu, IRC, HackerNews, YouTube, PhilPapers, Books3, Project Gutenberg( PG-19), OpenSubtitles, 영어 Wikipedia, DM Mathematics, EuroParl, Enron Emails corpus 및 NIH ExPorter. 여기에는 각각 원래 OpenWebText 및 BookCorpus 데이터 세트의 확장인 OpenWebText2 및 BookCorpus2도 포함됩니다. 데이터 소스의 다양성은 일반적인 교차 도메인 지식을 향상시키고 결과적으로 다운스트림 일반화 기능을 향상시킬 수 있습니다.

이 데이터 세트의 주요 과제는 엄청난 크기입니다. 데이터 세트에는 825GiB의 텍스트가 있으며 이는 4.2TiB의 사전 처리 및 압축된 데이터 포인트로 변환됩니다. 모델을 훈련하고 호스팅할 때 직면하는 문제와 유사하게, 단일 인스턴스에서 이 데이터 세트로 모델을 훈련하는 것은 많은 시간이 걸리고 실용적이지 않습니다.

우리의 솔루션은 데이터 세트를 약 1GiB의 데이터 청크로 나누고 기능을 로드하고 사전 처리하는 것입니다. 텐서플로우 데이터세트 객체를 저장하고 아마존 엘라스틱 파일 서비스 (아마존 EFS). TensorFlow 데이터 세트는 우리 모델과 잘 통합되는 사용하기 쉬운 고성능 데이터 파이프라인을 제공합니다. Amazon EFS는 파일이 추가 및 삭제될 때 자동으로 확장되는 공유 파일 시스템을 구축할 수 있는 사용하기 쉬운 서비스입니다. 또한 Amazon EFS는 필요할 때 더 높은 처리량 수준으로 버스트할 수 있으며 이는 데이터 및 모델 교육 파이프라인에서 매우 중요합니다.

다음으로 이러한 문제를 해결하기 위한 분산 교육 전략을 살펴봅니다.

분산 교육

이 프로젝트에서 우리는 모델 크기와 데이터 볼륨 확장이라는 두 가지 문제에 직면했습니다. 모델 크기와 훈련 가능한 매개변수 수를 늘리면 정확도가 향상될 수 있지만 단일 GPU 메모리 또는 단일 인스턴스의 여러 GPU에 맞출 수 있는 모델에는 한계가 있습니다. 또한 모델 크기가 클수록 학습하는 데 더 많은 시간이 걸립니다.

데이터 병렬 처리와 모델 병렬 처리라는 두 가지 방법으로 이러한 문제를 해결할 수 있습니다. 데이터 병렬 처리를 통해 우리는 훈련 속도를 높이기 위해 미니 배치의 기록을 다른 장치에 배포하여 확률적 경사 하강법(SGD)을 수행합니다. 그러나 병렬 데이터 교육에는 모든 장치의 그라디언트를 사용하여 미니 배치 그라디언트 평균을 계산하는 추가 복잡성이 있습니다. AllReduce, 훈련 클러스터가 커질수록 더 어려워집니다. 데이터 병렬 처리를 사용하는 동안 모델과 단일 데이터 포인트를 장치(CPU 또는 GPU)에 맞출 수 있어야 합니다. 이러한 큰 모델의 크기는 단일 GPU의 메모리보다 훨씬 크기 때문에 실험의 제한 요소입니다. 크기.

또 다른 솔루션은 모델을 여러 장치로 분할하는 모델 병렬 처리를 사용하는 것입니다. 모델 병렬 처리는 여러 장치 또는 노드(예: GPU 장착 인스턴스) 간에 모델을 분할하고 GPU 활용을 최대화하기 위해 이러한 장치에서 모델을 훈련하는 효율적인 파이프라인을 만드는 프로세스입니다.

데이터 병렬화

데이터 병렬화는 다중 GPU 또는 분산 교육에 대한 가장 일반적인 접근 방식입니다. 데이터를 일괄 처리하고 여러 장치(각각 복제된 모델을 호스팅함)로 보낸 다음 결과를 집계할 수 있습니다. 데이터 병렬화를 위해 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.GradientTapeDistributedGradientTape 수행 AllReduce.
  5. 리더 노드에서 모든 작업자 노드로 초기 모델 변수를 브로드캐스트합니다.
  6. 장치 0만 체크포인트를 저장할 수 있는지 확인하십시오.

모델 병렬화

단일 GPU를 사용하여 학습할 수 있을 만큼 모델을 작게 유지하도록 하이퍼파라미터를 조정하거나 모델 병렬 처리를 사용하여 여러 인스턴스에 걸쳐 여러 GPU 간에 모델을 분할할 수 있습니다. 모델의 학습 가능한 매개변수 수를 늘리면 정확도가 향상될 수 있지만 단일 GPU 메모리에 넣을 수 있는 최대 모델 크기에는 제한이 있습니다. SageMaker 분산 모델 병렬 라이브러리를 사용하여 더 큰 모델을 훈련했습니다. 단계는 다음과 같습니다.

  1. 다음을 사용하여 라이브러리 가져오기 및 초기화 smp.init().
  2. Keras 모델은 Keras 모델 클래스 대신 smp.DistributedModel에서 상속해야 합니다.
  3. 세트 drop_remainder=True FBI 증오 범죄 보고서 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) 

SageMaker 분산 모델 병렬 라이브러리에 대한 TensorFlow 교육 스크립트를 활성화하는 방법에 대한 자세한 가이드는 다음을 참조하십시오. TensorFlow 교육 스크립트 수정. PyTorch의 경우 다음을 참조하십시오. PyTorch 교육 스크립트 수정.

SageMaker 디버거

이전 섹션에서 모델 및 데이터 병렬화 기술을 사용하여 훈련을 최적화하는 방법에 대해 논의했습니다. 와 함께 Amazon SageMaker 디버거, 이제 교육 실행에서 성능 프로파일링 정보를 캡처하여 교육이 얼마나 개선되었는지 확인할 수 있습니다. 기본적으로 디버거는 500밀리초의 샘플링 간격으로 GPU, CPU 사용률, 메모리, 네트워크 및 I/O와 같은 각 SageMaker 교육 작업에 대한 시스템 메트릭을 캡처합니다. 다음과 같이 데이터에 액세스할 수 있습니다.

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 교육 작업에 대한 총 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 Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.

Horovod에서 SageMaker 분산 데이터 병렬 라이브러리로 전환하여 성능을 향상시킬 수 있습니다. 다음 그래프에서 GPU가 더 효율적으로 활용되고 짧은 시간 동안만 낮은 활용도로 떨어지는 것을 볼 수 있습니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.

교육 인프라

모델 훈련을 위해 SageMaker 훈련 작업을 사용하여 10 ml.p3.16xlarge 인스턴스를 사용했습니다. SageMaker는 인프라를 관리할 필요 없이 기계 학습(ML) 모델을 훈련하고 조정하는 시간과 비용을 줄여줍니다. SageMaker를 사용하면 내장 도구를 사용하여 ML 모델을 쉽게 훈련 및 조정하여 훈련 실험을 관리 및 추적하고, 최적의 하이퍼파라미터를 자동으로 선택하고, 훈련 작업을 디버그하고, GPU, CPU 및 네트워크 대역폭과 같은 시스템 리소스의 사용률을 모니터링할 수 있습니다. 데이터는 Amazon EFS에서 호스팅되어 관리나 프로비저닝 없이 파일을 추가 및 제거할 때 확장 및 축소가 가능했습니다. 우리의 주요 목표는 교육 속도를 개선하고 비용을 줄이는 것이었습니다.

모델 확장성

이 인프라는 주로 언어 생성에 사용되지만 GPT 아키텍처 및 Pile 데이터 세트와 함께 이러한 기술을 사용하여 NLP 이외의 많은 도메인에서 유용한 대규모 변환기 모델을 훈련할 수 있습니다. 기계 학습 자체에서 많은 컴퓨터 비전 작업은 이제 표현 학습과 같은 작업에서 기존 CNN(Convolutional Neural Network)보다 성능이 우수한 것으로 나타난 대형 매개변수(변환기) 아키텍처로 해결됩니다(참조 자체 감독형 변압기와 10배 더 효율적인 교육을 통해 컴퓨터 비전의 최첨단 기술 발전) 및 이미지를 텍스트로 대규모 매핑(예: 쥐다). 큰 매개변수 모델은 다음과 같은 분야의 생명과학에서도 새로운 지평을 열고 있습니다. 단백질 구조 분석의료 영상 데이터 분석.

분산 교육 및 대규모 모델 관리를 위해 이 게시물에서 자세히 설명하는 솔루션은 이러한 도메인의 모델에도 적용되어야 합니다.

트레이드 오프

대규모 언어 모델 교육의 위험과 이러한 위험을 완화하기 위한 전략 및 개발과 관련된 잠재적 위험에 대해 충분한 고려가 있는지 여부에 대해 연구 커뮤니티에서 지속적인 토론이 있었습니다. 환경 비용. 에 따르면 종이 ACM에 발표된 GPU에서 단일 BERT 기본 모델(초매개변수 조정 없이)을 훈련하는 데는 미국 횡단 비행만큼 많은 에너지가 필요한 것으로 추정되었습니다. 환경 영향은 모델 크기에 따라 확장되며 이러한 모델을 효율적으로 미세 조정할 수 있으면 잠재적으로 배출량을 크게 줄일 수 있습니다. AWS는 최근 새로운 고객 탄소 발자국 도구, 지속 가능성을 높이고 탄소 배출량을 줄이기 위한 Amazon의 노력의 일환으로 모든 AWS 고객이 무료로 사용할 수 있습니다. AWS 클라우드에서 애플리케이션을 실행하면 탄소 발자국을 잠재적으로 줄일 수 있습니다( 2019 보고서).

결론

이 게시물은 SageMaker를 사용하여 AWS 클라우드에서 XNUMX억 개의 파라미터로 언어 모델의 미세 조정을 용이하게 하는 솔루션을 시연했습니다.

SageMaker를 사용한 모델 병렬 처리에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker에서 모델 병렬 추가 및 Hugging Face를 사용하여 175억 개 이상의 매개변수 NLP 모델 훈련Latent Space가 Amazon SageMaker 모델 병렬 처리 라이브러리를 사용하여 대규모 변압기의 경계를 확장 한 방법.

제품 및 프로세스에서 ML 사용을 가속화하는 데 도움이 필요하면 Amazon ML 솔루션 랩.


저자에 관하여

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.시아 골라미 Amazon ML Solutions Lab의 선임 데이터 과학자로 다양한 산업 분야의 고객을 위한 AI/ML 솔루션을 구축하고 있습니다. 그는 자연어 처리(NLP)와 딥 러닝에 열정적입니다. 일 외에는 자연 속에서 시간을 보내고 테니스를 치는 것을 즐깁니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.메디 누리Amazon ML Solutions Lab의 관리자이자 수석 응용 과학자로서 다양한 산업 분야의 고객과 협력하여 고객이 클라우드 마이그레이션 여정을 가속화하고 최첨단 솔루션을 사용하여 ML 문제를 해결하도록 돕습니다. 기술.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.김무현 Amazon Machine Learning Solutions Lab의 데이터 과학자입니다. 머신 러닝과 딥 러닝을 적용하여 고객의 다양한 비즈니스 문제를 해결하고 숙련도를 높일 수 있도록 도와줍니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함. 대니 버드 Amazon ML Solutions Lab의 응용 과학자입니다. 연구소에서 그는 컴퓨터 비전에서 강화 학습에 이르기까지 ML 전문 분야에서 고객이 고급 ML 솔루션을 개발하도록 도왔습니다. 그는 기술을 발전시키고 그 과정에서 AWS 제품의 새로운 잠재력을 이끌어내는 데 열정적입니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함.프란시스코 칼데론 로드리게스 Amazon ML Solutions Lab의 데이터 과학자입니다. ML Solutions Lab의 구성원으로서 그는 딥 러닝을 사용하여 AWS 고객의 중요한 비즈니스 문제를 해결하는 데 도움을 줍니다. 여가 시간에 Francisco는 음악과 기타 연주, 딸과 축구, 가족과 함께 시간을 보내는 것을 좋아합니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함. 나카야마 요헤이 Amazon ML Solutions Lab의 딥 러닝 아키텍트입니다. 그는 다양한 업종의 고객과 협력하여 비즈니스 문제를 해결하기 위해 인공 지능 및 AWS 클라우드 서비스 사용을 가속화합니다. 그는 ML/AI 기술을 우주 산업에 적용하는 데 관심이 있습니다.

TensorFlow 및 Amazon SageMaker PlatoBlockchain Data Intelligence를 사용하여 테라바이트 규모의 데이터에 대해 XNUMX억 매개변수 언어 모델을 생성, 교육 및 배포합니다. 수직 검색. 일체 포함. 나탈리 라우 슈마 이어 AWS의 수석 응용 과학자로 고객이 딥 러닝 애플리케이션을 개발하도록 돕고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습