0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kaggle tutrial bonus part1

Last updated at Posted at 2024-12-21

は、実際にsubmitしてみようぜ!という部分です。computer vision tutorial に追加で記載されているので、画像認識コンペの1つとなっています。ここまでのtutorialを読めば、モデルの部分を理解できることになります。kerasとgoogle TPUが前提となるので、その部分を理解するtutirialでしょう。筆者はTPUについて詳しくないので、解説のポイントをはずしているかもしれません。とりあえず、日本語訳や私の解説をできるだけ載せておきます。

TPUはGPUが8個ある環境に抽象化できます。すると、一般的なGPU1つのように全てのtaskをGPUに任せるのではなく、あるGPUにはtask1,別のGPUにはtask2というふうに作業を割り振る必要が出てきます。

Distribution Strategy

人間が仕事を割り振ることはなく、この点についてもkeras(tensotflow)はよしなにしてくれます。我々は、いくつかの宣言をcodeすることが必要です。

# Detect TPU, return appropriate distribution strategy
try:
    tpu = tf.distribute.cluster_resolver.TPUClusterResolver() 
    print('Running on TPU ', tpu.master())
except ValueError:
    tpu = None

if tpu:
    tf.config.experimental_connect_to_cluster(tpu)
    tf.tpu.experimental.initialize_tpu_system(tpu)
    strategy = tf.distribute.experimental.TPUStrategy(tpu)
else:
    strategy = tf.distribute.get_strategy() 

print("REPLICAS: ", strategy.num_replicas_in_sync)

上のところは意味を理解するのが少し面倒ですが、一般に使いまわせるのであまり気にする必要はありません。

tpu = tf.distribute.cluster_resolver.TPUClusterResolver()
TPUの場所を確認。TPUが割り当てられていればTPU リソースへの接続情報を表すオブジェクトをtpuという変数に押し込めます。

ここからは正常系のみを確認します。

tf.config.experimental_connect_to_cluster(tpu)
TensorFlow が TPU を使用できるように、ランタイムを TPU クラスタに接続します。

tf.tpu.experimental.initialize_tpu_system(tpu)
TPU を使用する前に、必要な初期化処理を実行します。

strategy = tf.distribute.experimental.TPUStrategy(tpu)
モデルの訓練を複数の TPU コアに分散させることで、高速化を図ります。

何個のGPUに分散されているかを確認するために最後printしています。

個人的に知らなかった部分
tf.distribute.MirroredStrategy
単一マシン上の複数の GPU で同期的に訓練を行うための戦略

tf.distribute.MultiWorkerMirroredStrategy
複数マシン上の複数の GPU で同期的に訓練を行うための戦略

など、他の戦略を調べてみると出てきました。
tf.distribute.MirroredStrategyは1度目にしたことがありましたが他にもいろいろあるのですね。

with strategy.scope():
 #モデルを定義

とすることで、訓練が勝手にTPUで行われることになります。
そのほか出てくる多くの関数は基本的に過去のtutorial上で学んでいることとなります。
TPUとGPUでは性能の特性や取り扱いに違いが生じたり、面倒になることもありますが、1けた(10倍くらい)TPUの方が早い印象です。(GPU,TPUのバージョンなどで大きく変わってきます)。もし使えるのであればTPUを利用する方が価格あたりの性能が良いでしょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?