TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。

TensorFlowとAmazonSageMakerを使用して、テラバイト単位のデータでXNUMX億パラメータの言語モデルを作成、トレーニング、デプロイします

言語モデルのサイズの増加は、近年の自然言語処理(NLP)の最大のトレンドの2018つです。 2年以降、BERTとそのバリアント、GPT-3、T-NLG、GPT-175(XNUMX億パラメーター)など、これまでにない規模の言語モデルの開発と展開が見られました。

これらのモデルは、可能なアーキテクチャの革新の限界を押し広げました。 大規模な深層学習モデルをトレーニングする場合、特に生成型の事前トレーニング済みトランスフォーマーの新しい波に直面する場合、いくつかの課題に直面します。 これらの課題には、ハードウェアの制限と、計算および効率とのトレードオフが含まれます。 モデルとデータの並列処理のこれらの課題を克服するために、AWSは幅広い機能を提供します。

この投稿では、データの並列化とモデルの並列化を使用したXNUMXつの主要なアプローチを紹介します。 アマゾンセージメーカー、そして彼らの賛否両論について話し合う。

モデル

言語モデルには、論文で紹介したTransformersを使用します 注意はあなたが必要とするすべてです。 トランスフォーマーは、入力と出力の間にグローバルな依存関係を描画するための自己注意メカニズムに依存することにより、RNNの落とし穴を意図的に回避するように設計された深層学習モデルです。 Transformerモデルのアーキテクチャーにより、並列化が大幅に向上し、比較的短いトレーニング時間で高いパフォーマンスを実現できます。 論文で紹介されたTransformers、BERTの成功に基づいて構築 BERT:言語理解のためのディープ双方向トランスフォーマーの事前トレーニング、言語表現のための双方向の事前トレーニングを追加しました。 クローズタスクに触発されたBERTは、マスクされた言語モデリング(MLM)で事前にトレーニングされており、モデルはランダムにマスクされたトークンの元の単語を復元することを学習します。 BERTモデルは、次の文の予測(NSP)タスクでも事前にトレーニングされており、2018つの文が正しい読み順であるかどうかを予測します。 XNUMX年の登場以来、BERTとそのバリエーションは言語モデルで広く使用されています。

まず、トークン埋め込みと位置埋め込み用にXNUMXつの埋め込みレイヤーを作成します。 入力埋め込みは、トークン埋め込みと位置埋め込みの合計です。

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

次に、XNUMXつのサブレイヤーを持つ変圧器デコーダーブロックを定義します。マルチヘッド自己注意レイヤーと、レイヤーの正規化とドロップアウトが続く単純な完全に接続されたフィードフォワードネットワークです。

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、英語版ウィキペディア、DM数学、EuroParl、Enron Emailsコーパス、およびNIHExPorter。 また、元のOpenWebTextおよびBookCorpusデータセットの拡張であるOpenWebText2およびBookCorpus2も含まれています。 データソースの多様性により、一般的なクロスドメインの知識が向上し、その結果、ダウンストリームの一般化機能が向上します。

このデータセットの主な課題は、サイズの大きさです。 データセットには825GiBのテキストがあり、これは4.2TiBの前処理および圧縮されたデータポイントに変換されます。 モデルのトレーニングとホスティングで直面する課題と同様に、単一のインスタンスでこのデータセットを使用してモデルをトレーニングするには、多くの時間がかかり、実用的ではありません。

私たちのソリューションは、データセットを約1 GiBのデータチャンクに分割し、機能をロードして前処理することです。 TensorFlowデータセット オブジェクト、およびそれらを格納します Amazon エラスティック ファイル サービス (Amazon EFS)。 TensorFlowデータセットは、モデルとうまく統合できる、使いやすく高性能なデータパイプラインを提供します。 Amazon EFSは使いやすいサービスであり、ファイルの追加と削除に応じて自動的に拡張される共有ファイルシステムを構築できます。 さらに、Amazon EFSは、必要に応じてより高いスループットレベルにバーストすることができます。これは、データとモデルのトレーニングパイプラインで重要です。

次に、これらの課題に取り組むための分散トレーニング戦略を検討します。

分散トレーニング

このプロジェクトでは、モデルサイズとデータ量のスケーリングというXNUMXつの課題に直面しました。 モデルのサイズとトレーニング可能なパラメーターの数を増やすと、精度が向上する可能性がありますが、単一のGPUメモリまたは単一のインスタンスで複数のGPUに適合できるモデルには制限があります。 さらに、モデルサイズが大きいほど、トレーニングに時間がかかります。

これらの課題には、データの並列処理とモデルの並列処理というXNUMXつの異なる方法で取り組むことができます。 データの並列処理では、ミニバッチの記録をさまざまなデバイスに分散してトレーニングを高速化することにより、確率的勾配降下法(SGD)を実行します。 ただし、並列データトレーニングには、すべてのデバイスからの勾配を使用したミニバッチ勾配平均の計算が非常に複雑になります。 AllReduce、トレーニングクラスターが大きくなるにつれて難しくなります。 データの並列処理を使用する場合、モデルと単一のデータポイントをデバイス(CPUまたはGPU)に適合させる必要があります。これは、このような大きなモデルのサイズが単一のGPUのメモリよりもはるかに大きいため、実験の制限要因です。サイズ。

もうXNUMXつの解決策は、モデルを複数のデバイスに分割するモデル並列処理を使用することです。 モデルの並列処理は、モデルを複数のデバイスまたはノード(GPUを搭載したインスタンスなど)に分割し、効率的なパイプラインを作成してこれらのデバイス間でモデルをトレーニングし、GPUの使用率を最大化するプロセスです。

データの並列化

データの並列化は、複数のGPUまたは分散トレーニングへの最も一般的なアプローチです。 データをバッチ処理し、複数のデバイス(それぞれが複製されたモデルをホストしている)に送信してから、結果を集約できます。 データの並列化のために、Horovodと SageMaker分散データ並列ライブラリ.

Horovodは、TensorFlow、Keras、PyTorch、ApacheMXNet向けの分散型ディープラーニングトレーニングフレームワークです。 Horovodを使用するために、次のプロセスを実行しました。

  1. 実行して初期化する hvd.init().
  2. 各デバイスを単一のプロセスに関連付けます。 最初のプロセスまたはワーカーは最初のデバイスに関連付けられ、XNUMX番目のプロセスはXNUMX番目のデバイスに関連付けられ、以下同様に続きます。
  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モデルは、KerasModelクラスではなく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) 

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

デバッガーは次のユーティリティを提供します 視覚化する さまざまな方法でデータをプロファイリングします。 次の例では、GPUとCPUの合計使用率、およびHorovodを使用したマルチGPUトレーニングジョブの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とAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。

HorovodからSageMaker分散データ並列ライブラリに切り替えることでパフォーマンスを向上させることができます。 次のグラフでは、GPUがより効率的に使用されており、短期間で使用率が低くなっていることがわかります。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。

トレーニングインフラストラクチャ

モデルのトレーニングには、SageMakerトレーニングジョブを使用して10ml.p3.16xlargeインスタンスを使用しました。 SageMakerは、インフラストラクチャを管理することなく、機械学習(ML)モデルのトレーニングと調整にかかる時間とコストを削減します。 SageMakerを使用すると、組み込みツールを使用してMLモデルを簡単にトレーニングおよび調整して、トレーニング実験を管理および追跡し、最適なハイパーパラメーターを自動的に選択し、トレーニングジョブをデバッグし、GPU、CPU、ネットワーク帯域幅などのシステムリソースの使用率を監視できます。 データはAmazonEFSでホストされていたため、管理やプロビジョニングを必要とせずにファイルを追加および削除するときに、データを拡大および縮小できました。 私たちの主な目的は、トレーニング速度を向上させ、コストを削減することでした。

モデルのスケーラビリティ

このインフラストラクチャは主に言語生成に使用されますが、GPTアーキテクチャとPileデータセットを使用すると、これらの手法を使用して大規模なトランスモデルをトレーニングできます。これは、NLP以外の多くのドメインで役立ちます。 機械学習自体では、多くのコンピュータービジョンタスクが大規模パラメーター(トランスフォーマー)アーキテクチャで解決され、表現学習などのタスクで従来のCNN(畳み込みニューラルネットワーク)よりも優れていることが示されています(を参照)。 自己監視型トランスフォーマーと10倍効率的なトレーニングにより、コンピュータービジョンの最先端を前進させる)および画像からテキストへの大規模なマッピング( CLIP)。 大パラメータモデルはまた、次のような分野のライフサイエンスの新境地を開拓しています タンパク質構造分析 & 医用画像データの分析.

分散トレーニングと大規模モデルの管理についてこの投稿で詳しく説明するソリューションは、これらのドメインのいずれかのモデルにも適用する必要があります。

トレードオフ

大規模な言語モデルをトレーニングするリスク、およびそれらの開発に関連する潜在的なリスクとこれらのリスクを軽減するための戦略について十分な考慮が払われているかどうかについて、研究コミュニティで継続的な議論が行われています。環境コスト。 によると ACMで公開され、GPUで単一のBERTベースモデル(ハイパーパラメーター調整なし)をトレーニングするには、アメリカ横断のフライトと同じくらいのエネルギーが必要であると推定されました。 環境への影響はモデルのサイズに応じて変化し、そのようなモデルを効率的に微調整できることで、排出量を大幅に削減できる可能性があります。 AWSは最近新しい カスタマーカーボンフットプリントツール、持続可能性を高め、炭素排出量を削減するためのAmazonの取り組みの一環として、すべてのAWSのお客様が無料で利用できます。 AWSクラウドでアプリケーションを実行すると、二酸化炭素排出量を削減できる可能性があります( 2019レポート).

まとめ

この投稿では、SageMakerを使用してAWSクラウドでXNUMX億のパラメーターを使用して言語モデルを微調整することを容易にするソリューションを示しました。

SageMakerを使用したモデルの並列処理の詳細については、を参照してください。 AmazonSageMakerでモデルの並列追加とHuggingFaceを使用して175億以上のパラメーターNLPモデルをトレーニングする & LatentSpaceがAmazonSageMakerモデルの並列処理ライブラリを使用して大規模なトランスフォーマーのフロンティアを推進した方法.

製品やプロセスでのMLの使用を加速するためにサポートが必要な場合は、 Amazon MLソリューションラボ.


著者について

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。シア・ゴラミ アマゾンMLソリューションラボのシニアデータサイエンティストであり、さまざまな業界の顧客向けにAI/MLソリューションを構築しています。 彼は自然言語処理(NLP)とディープラーニングに情熱を注いでいます。 仕事以外では、Siaは自然の中で過ごしたりテニスをしたりすることを楽しんでいます。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。メディ・ノリアマゾンMLソリューションラボのマネージャー兼シニアアプライドサイエンティストであり、さまざまな業界のお客様と協力して、クラウド移行の旅を加速し、最先端のソリューションを使用してMLの問題を解決するのを支援しています。テクノロジー。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。キム・ムヒョン Amazon Machine Learning SolutionsLabのデータサイエンティストです。 彼は、機械学習とディープラーニングを適用することで顧客のさまざまなビジネス上の問題を解決し、顧客が熟練するのを支援します。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。 ダニー・バード は、Amazon MLSolutionsLabの応用科学者です。 ラボでは、コンピュータービジョンから強化学習まで、MLの専門分野で、顧客が高度なMLソリューションを開発するのを支援しました。 彼はテクノロジーを前進させ、その過程でAWS製品から新しい可能性を解き放つことに情熱を注いでいます。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。フランシスコ・カルデロン・ロドリゲス は、Amazon MLSolutionsLabのデータサイエンティストです。 ML Solutions Labのメンバーとして、ディープラーニングを使用してAWSのお客様の重大なビジネス問題の解決を支援しています。 余暇には、音楽やギターを弾いたり、娘とサッカーをしたり、家族と一緒に時間を楽しんだりするのが好きです。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。 中山陽平 は、Amazon MLSolutionsLabのディープラーニングアーキテクトです。 彼はさまざまな分野の顧客と協力して、人工知能とAWSクラウドサービスの使用を加速し、ビジネス上の課題を解決しています。 彼はML/AI技術を宇宙産業に適用することに興味を持っています。

TensorFlowとAmazonSageMakerPlatoBlockchain Data Intelligenceを使用して、テラバイトのデータでXNUMX億パラメーターの言語モデルを作成、トレーニング、デプロイします。 垂直検索。 愛。 ナタリー・ラウシュマイヤー AWSのシニア応用科学者であり、顧客がディープラーニングアプリケーションを開発するのを支援しています。

タイムスタンプ:

より多くの AWS機械学習