アプリとサービスのすすめスマートフォン用の表示で見るアプリとサービスのすすめアプリやIT系のサービスを中心に書いていきます。今回はkerasを使って、AWSのGPU環境下で5百万枚の画像を訓練してみた。ラベル数は200ラベル。ビックデータと呼ばれる規模だと思う。EPS最適化)」を選択2あとはチュートリアル通りに最後までやれば、GPU環境を構築できる。)**補足**・チュートリアルの下のコマンドはlinuxパッケージのみ必要らしい。image)だいたい、cifar-10のチュートリアル通り。バッチを作るメソッドのtf.train.shuffle_batch()は画像枚数が大きすぎると、メモリを食い過ぎてショートする。tfrecordを複数にしても、ラベルが上手くシャッフルできないせいか、損失関数が上手く減少しない。ここら辺のロジックは、なかなかセオリー通りにいかないので、以下のコードで読み込ませた。num_preprocess_threadsの数を増やしてやれば、大容量でも上手く読み込めた。枚数が億単位になるとできるか不明。batch数は32×GPU数(今回は32×8=256)が一番安定して、損失関数が減少した。形式で画像とラベルがペアで入ってる。tfrecordにこだわらず、pickleファイルとか他のファイルでも問題ない。tfrecordはたまたま使いやすいから、個人的に使っているだけ。枚数が増えてメルカリみたいに転移学習を用いる環境下ではむしろtfrecordは向いてないので、適材適所でファイルは使うべき。ちなみに1ラベルごとに1つのtfrecordを作成したので、合計200ファイル。ラベルごとの作成過程は、urlを呼び出してcsvに保存→s3からディレクトリに保存し→tfrecord作成まで一連の過程を1ラベルごとにした。label_0(ディレクトリ)→train_label_0.tfrecordsこんな感じでやると以下の利点があって、一番効率がよく作成できた。resnet_v2を使用。train_model.save('/home/ubuntu/check_dir/inception_model_ep8.h5')coord.request_stop()coord.join(threads)K.clear_session()損失関数はこんな感じで順調に減少。3エポックくらいから減少しなくなった。学習率cifar-10とかで使ってる学習率の調整用メソッドtf.train.exponential_decay()はkerasの場合、次で代用できる。lrateこれをcallback.append(LearningRateScheduler(step_decay))でcallbackに入れれば、epochごとに最適な学習率に調節してくれる。パラメータは自分で調整した。resnet系のoptimizerのベストプラクティスに関しての詳細はここら辺のサイトに詳しくのってる。→参考サイトSGD+Momentumとnesterov=Trueがベストプラクティスらしい。パラメータはチュートリアルとか、論文読みあって総括して決めたGPU環境下での訓練kerasの場合、複数のGPUを使用するなら、modelをmulti_gpu_model()の引数に代入する必要がある。インスタンスタイプのp2_8xlargeはGPUを8こ搭載してるので、gpus=8にしてる。InceptionResNetV2(train_image)またOOMエラー対策かわからないけど、GPU使うときはtf.Session内で、次のおまじないが必要。保存はmulti_gpu_model()メソッドに入れたモデル(ここではtrain_model)を保存しないとダメ。このときモデルの保存にcallbackのModelCheckpointはmulti_gpu_model()メソッドのモデルを保存してしまうので使えない。モデルの保存は訓練終了時に指定。steps=100)のstepsとバッチサイズは、読み込むテスト画像とぴったり合うようする必要がある。batch_size=125*8にして、1000バッチを100回繰り返して、10万枚の画像を読み込んだ。評価用にラベルもtfrecordから取り出した。・環境が整ってない・5百万単位の大規模データでの訓練の2つが要因でエラーが多々発生した。反省点としては・停滞したら、立ち止まって調査、考える時間にあてる・思考時間とPC作業の割合は7:3くらいが自分にはベストプラクティスこれ以上枚数が増えると、一部の界隈(メルカリ)みたいに転移学習+次元削減(PCAとか)+faissを使うような、効率性を追求した環境構築の必要あると思った。»ABOUT某大学で科目等履修生(学生)をやりながらフリーランス翻訳者として活動中。フリーランス、ノマドライフと英語の情報を中心に、雑記や他のことについても書いています。(1)はてなブログをはじめよう!trafalbadさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。