「世界で最も売れているカードゲーム」としてギネス認定された「遊戯王OCG」には、カードの分類やデッキの構築をサポートする公式アプリがある。1万種を超えるカードを読み込んでデータ処理する仕組みは、どのように構築されているのか。
「遊戯王オフィシャルカードゲーム」(以下、遊戯王OCG)は、コナミデジタルエンタテインメントが販売するカードゲームで、ゲームカードの種類は2019年に1万種類を超えた。デュエリスト(プレーヤー)はその中から40〜60枚を選んで、対戦手札群「デッキ」を構築する。組み合わせのパターンは無限にあるため、同社は公式サポートアプリ「遊戯王ニューロン」でカードの分類やデッキの構築を支援する。
遊戯王ニューロンは「iOS」と「Android」向けのアプリとして世界100カ国以上で配信されている。スマホカメラでカード情報を読み取って自動で分類し、シミュレーションデッキを構築できる。一度の読み込みで最大20枚のカードを検出してアプリに取り込める他、「ライフポイント計算」や「手札シミュレーション」「5枚ドロー」など、デュエリスト向けの便利な機能も提供する。
このカメラ検索機能で活用されているのが、「Amazon SageMaker」(以下、SageMaker)を活用した大規模画像データMLOps基盤だ。
5月11日〜12日にアマゾン ウェブ サービス ジャパンが主催した「AWS Summit Online 2021」で「遊戯王ニューロンにおけるAmazon SageMakerの活用 大規模画像データのMLOps基盤構築」と題し、コナミデジタルエンタテインメント制作支援本部 技術開発部の田中秀和氏が同サービス開発の経緯やMLOps基盤の体制について語った。
「2017年に研究開発を開始し、2018年にカメラを使ったカード検出やカード分類モデルの最適化、テストデータ作成などを本格的に始めました。2019年にはSageMakerを使ってMLOps基盤を構築しました」(田中氏)
遊戯王ニューロンは、物体検出モデルに「SSDLite」を、画像分類モデルに「VGG16」と「MobileNetV2」を採用する。全結合層部分にバッチノーマライゼーションを追加しており、同氏によれば「現在のディープラーニングにおける画像分類で用いる最新モデルではないが、一般的なモデル」だという。
学習データは、1万種類のCGのカード画像からデータをオーギュメンテーション(データ拡張)して生成した。学習データのサイズは50GB〜60GBで、学習時間は約10日間。カードゲームのイベント会場で使用されることも想定すると、環境の影響が強い状況や指が重なった状態、カードが重なった状態など、検出や分類が困難な環境においてもカードを認識できる必要がある。
アプリへの実装や運用を行う制作チームからカード画像の提供を受け、技術開発部が学習モデルの実装と更新、提供をする開発体制をとる。新しいカードのリリースに合わせて、1カ月〜1カ月半ごとに学習モデルを更新する。MLOps基礎の実装と運用、ライブラリの実装は技術開発部が担当する。これらの作業をプロジェクトマネージャーの他、機械学習エンジニア数名で担当している。
「カード分類モデルの更新は、前処理と学習、テスト、後処理というサイクルで行います。SageMaker導入前は、新たにリリースされるカード画像を受け取ったら、専任のメンバーが前処理してデータストレージに学習データを保存し、それをサーバにコピーし学習を実行していました。まずローカルで学習を実施し、それが終わったら学習済みモデルをコピーして精度テストをした後、モデル変換および実機テストをしていました」(田中氏)
ここで課題になったのが、学習フロー全体の複雑化による作業コストの増大だった。また、データ管理コストや運用コストも増加し、作業の属人化や情報のサイロ化も発生していたという。
「学習や運用、データなど、さまざまな課題がありました。その中で採用したのがSageMakerを軸としたMLOps基盤でした」(田中氏)
課題は学習や運用、データのそれぞれの局面で複数項目に渡っていた。例えば、学習では「学習フローの複雑化」「処理ステータスの把握、共有、管理、モニタリング、ログ」が課題になった。また、運用では「定期的なリリースサイクルへの対応」や「属人化コスト」「物理的な障害リスク」「学習環境の構築やメンテナンスコスト」「前処理や学習コードなどのメンテナンス/管理」が課題になった。さらに、データについては「大量データのコピーと共有、更新の頻発化」「大量データによるディスク容量の圧迫や管理の煩雑化」「設定パラメーターの管理」が課題になった。
「これらの課題に対して、AWSのサービスを組み合わせて解決を図りました。学習や運用における課題に対してはSagemakerをベースに『AWS Lambda』や『Amazon CloudFront』『AWS CloudFormation』を適用し、データにおける課題には『Amazon Simple Storage Service(Amazon S3)』(以下、S3)や『Amazon FSx for Lustre』を活用してアプローチしました」(田中氏)
具体的には、学習処理では前処理と学習、推論、後処理、モニタリングにSageMakerを利用し、集計処理や運用時のステータス共有などはAWS LambdaやAmazon CloudFrontで実施する。
「SageMakerは各パイプライン処理ももちろんなのですが、ダッシュボードで結果やブログなども参照できるため、チーム全体で状況を確認できます。前処理から後処理まで、エンドツーエンドでワークフローを構築できることが特徴です。学習コードなどはDockerイメージ化して『Amazon ECR』に配置し、どのような環境でも同じイメージで前処理や学習ができるようにしました。学習やテストで必要なデータや学習済みモデルは全てS3に集約し、Amazon FSx for Lustreで大規模な学習データの読み込みとI/Oの高速化を図っています。各工程は『Apache Airflow』でパイプライン化しています」(田中氏)
パイプライン運用で発生した課題を解消するために「Amazon Managed Workflow for Apache Airflow」を活用し、AWSとオンプレミスで並列に学習させることで学習処理を冗長化している。学習結果と状態の可視化は「Slack」連携で対応する。再学習に対応するために、エポックごとに重みデータとモデルデータをS3に保存しているという。田中氏は学習データ生成におけるデータオーギュメンテーションの方法やスポットインスタンス利用時の課題とその解消法などを詳しく解説した上で、SageMakerを始めとするAWSサービスを組み合わせるメリットを次のように語った。
「SageMakerはダッシュボードなどの機能が充実しており、属人化リスクを軽減でき、Amazon AirFlowと組み合わせれば複雑なワークフローを構築できます。学習過程や学習結果、学習処理におけるエラーや推論結果などはSlackに通知して、現在の状況や結果を素早く把握、共有できます。また『SageMaker Experiments』の導入によって、精度比較やハイパーパラメーターの管理も可能になりました」(田中氏)
また、データや運用におけるポイントと注意点として、次のように述べ、講演を締めくくった。
「スポットインスタンスはコスト削減が期待できるのですが、割り込み処理で学習が一時停止することがあるため、再学習などのリカバリープランを事前に立てておく必要があります。学習データの入力にはAmazon FSx for lustreが非常に効果的で、ロード時間を大幅に削減できました。大量のデータの管理については、S3にして集約して無駄なコピーや二重管理などを回避できます。AWS CloudFormationで学習環境を構築することで、運用開始までの時間とコストを削減できます」(田中氏)
Copyright © ITmedia, Inc. All Rights Reserved.
製品カタログや技術資料、導入事例など、IT導入の課題解決に役立つ資料を簡単に入手できます。