電通国際情報サービスの3名の発表

深谷勇次氏(以下、深谷):「PyTorch × Azure × 自然言語処理 → ISID の AI 製品: TexAIntelligence の技術」と題して、電通国際情報サービスの3名が発表します。よろしくお願いいたします。

弊社、電通国際情報サービス、通称「ISID」と言います。ISIDは主に4つの事業セグメント、製造、金融、ビジネス、コミュニケーションを中心としてITのビジネスを展開している会社です。

ISIDは昔からAIのビジネス進めてきていますが、2020年に「より力を入れていこう」というメッセージも含めて“AIトランフォーメーションセンター”というものを設立し、よりお客さまにAIの技術を活用してDX、新規ビジネス革新につないでほしいと思っています。

私は、電通国際情報サービスの深谷と言います。ふだんはAIコンサルティンググループのマネージャーを実施しています。

“やってみないとわからない”がAIにはある

AIの実社会への実装に際してですが、AIの不確実性の話があります。「これはどういうことだろう」ということです。AI、データ分析もそうですが、お客さまのデータは、特に未来のデータも含めて考慮していかなきゃいけないところがあって。そうすると、やはり“やってみないとわからない”という観点がAIにはあるわけです。

そういうAIに対してどういうプロジェクトが必要かというと、探索的段階的な推進の必要性があります。これは経産省とか、さまざまなところで言われていることです。

探索的段階的な進め方を実施していくと、やはり先が見えにくいとか、時間がかかってしまうところがあるわけです。そうなると、やはりお客さまから、導入効果が早く得られるAI製品を提供してほしいという話が昔からよくありました。

そのような背景から、我々は日々たくさんの文章を読んで業務している方々を、AIの技術で支援できないかといろいろ考えていました。

このような方々の業務がどういう流れかというと、たくさんの文章がありますと。それを日々読んでいるわけですが、過去の知見文書のデータなどを参考にしながら業務をしています。そういう業務の中では、やはりキーワードの検索では不十分みたいなこともあります。

あとは、文章をもとに情報を展開する方々に業務を依頼することも必要です。あとは、ビジネスを判断する方々に情報をまとめて提供することも必要になってきます。

電通国際情報サービスが開発した「TexAIntelligence」

そのようなビジネスの現場に適用するものとして、我々は「TexAIntelligence」を開発して提供しています。機能としては、大きく「意味的類似検索」「自動分類」「文章要約」というものがあります。

このTexAIntelligenceを先ほどの業務に適用すると、スライドのようになるわけです。過去の知見文書データに対して意味的に類似検索したり、自動分類を行うことで情報展開を早めたり、効率化する。あと、文章を要約することで、ビジネスを判断する方々によりわかりやすく説明できたりします。

このようなTexAIntelligenceですが、さまざまな場面に利用してもらえると我々は思っていて、特に今は、品質保証部門や、製品企画部門、コールセンターの方々に活用してもらっています。

TexAIntelligenceはサブスクリプションのライセンスですが、日々、定期的にバージョンアップしています。2021年の1月にBERTの搭載も実現しています。

このようなTexAIntelligenceの技術を、今日は発表します。TexAIntelligenceはやはり製品なので、単なるプロトタイプじゃないところがありなかなか難しいところがあることの背景も踏まえ、後藤とファイサルから発表します。よろしくお願いいたします。

2人目の発表者の自己紹介

後藤勇輝氏(以下、後藤):それでは発表者代わり、私後藤から「ソリューション内でのAzure活用方法の解説」ということで発表します。よろしくお願いします。

まず簡単に自己紹介させてください。私は名前を後藤勇輝と言い、所属は深谷と同じく電通国際情報サービスのAIトランスフォーメーションセンターに所属しています。現在の業務としては、自社AIソフトの開発であったり、機械学習の案件の技術担当であったり、機械学習関連の研究開発などを行っています。

その他ということで個人的な活動として、2021年に入り書籍『PyTorch実践入門』を翻訳・出版しました。そのほか、QiitaやTwitterなども行っています。

自然言語処理ソフトウェアTexAIntelligenceでのAzureの活用実態

それでは本題に入ります。自然言語処理ソフトウェアTexAIntelligenceでのAzureの活用実態について発表します。

初めに、TexAIntelligenceのシステムのインフラ構成図になります。この図でわかるように、TexAIntelligenceはすべてAzure上で構成されています。

こちらすべてを載せているわけではないのですが、基本的にはスライドのようなパーツでTexAIntelligenceは構成しています。ストレージアカウント上に静的サイトをホスティングして、そのほかにデータベースであったり、アプリケーションサーバー、そして機械学習を行うサービス群といったような構成になっています。今回はまずアプリケーションサーバーの部分を説明します。

アプリケーションサーバーの6つの特徴

アプリケーションサーバーの6つの特徴ということで、先ほどのアプリケーションサーバーを詳しく中身を示したものがこの図です。

アプリケーションサーバーの中には、まずNGINX、Webサーバーがあり、クライアントからの情報を受け取ります。その後、具体的な処理はDjangoとDjango REST frameworkを用いて処理を行います。ここまではよくあるWebアプリケーションの中身だと思いますが、ここからが少し違って、今回TexAIntelligenceはAI製品ということで、学習や推論処理といった、比較的時間のかかる処理が存在します。

そういった処理ではレスポンスをすぐクライアントに返せないため、非同期処理が必要になります。

それを実現するのが、ブローカーであるRabbitMQと、実際に非同期処理の実施などを行うCeleryです。これらを使って非同期処理を行っています。

また、右側にあるのが、AzureのデータベースであるPostgreSQL。そしてログを収集するためのAzure Log Analyticsです。このように、Azureのサービスを使うことで、導入や開発のコストを下げて実装を行えました。

今少し簡単に説明しましたが、より詳しい説明を次のスライドに記載しているので、ご覧ください。

マシンラーニング・サービスの特徴

続いては、マシンラーニング・サービス部分の説明に入りたいと思います。マシンラーニング・サービスの2つの特徴ということで特徴を2つあげていますが、今回は時間の都合上、特徴の1つ目だけを説明します。

今回TexAIntelligenceのAI部分に関しては、Azure Machine Learningサービスを利用しています。AIサービスの実現のためには、普通のアプリケーションとは違うさまざまな難しさがあります。そういったAI製品特有の難しさというのを、Azure Machine Learningサービスを使うことで低減できます。

例えばモデルの管理であったり、学習データの管理といったものを、Azure Machine Learningサービスを使うことで、ソフトウェアに簡単に組み込めます。

こちらがマシンラーニングを使った際のTexAIntelligenceの挙動を、少し詳しく説明した図です。まず①の部分です。バックエンドのDjangoからデータセットをAzureのBLOBに登録します。その後、学習が走る際は、先ほど説明したように非同期処理が実行されます。

そして訓練のプログラムが計算サーバーのデータサイエンスVM(Data Science Virtual Machines)のほうに渡り、そこで実際に学習などの処理が行われます。

学習が終了すると、学習済みモデルを再びBLOBにアップロードして、その後推論を行う際には、このモデルをバックエンド側でダウンロードして推論を行うという流れになっています。ここまでがTexAIntelligenceのシステムのインフラ構成の内容になります。

Azure DevOpsと実装の流れ

続いては「AIソフトウェアのアジャイル開発過程におけるAzure活用方法」ということで、Azure DevOpsと、実際にそれを使った実装の流れについて説明します。

まずAzure DevOpsです。こちらは開発に必要なサービスを統合したプラットフォームです。スライドに示したように、Azure DevOpsの中には例えばタスク管理ツールである「Boards」というチケット式でタスク進捗を管理する機能であったり、CI/CDツールである「Pipelines」、そしてソースコードを管理する「Repos」などがあります。

そして下に記載しているのが、Azure DevOpsサービスのほかに今回の実装で使用したツールです。コミュニケーションツールとして「Teams」、そして開発用のコードエディターとして「Visual Studio Code」を開発チームでは使用しています。

現在の開発体制

実装の流れに入る前に、まずは現在の開発体制について少し説明させてください。現在の開発体制ということで、私たちのチームでは現在週に3日、開発用チャネルをTeams上で用意して、メンバー全員がそのチャネルで通話状態にして開発を行っています。

基本的に私たちのチームでは外部発注などは行わず、有識者を社内から横断で集め、完全内製化のスクラム体制で開発を行っています。

画像にあるのがコロナ前の開発体制です。以前はこのようにアジャイルスペースに集まって開発を行っていましたが、コロナ後は右に示す画像のように、Teams上で完全リモートの開発を行っています。

開発の流れ

では実際にどのように開発を行っているか、その流れを説明します。開発の流れということで、基本的にはAzure DevOpsですべて完結しています。はじめにタスク管理を先ほどのBoardsで行い、必要な機能や実装しなければいけない機能を開発メンバー個々人に割り当てます。

その後、開発はVisual Studio Codeを使って行います。リモート体制になってからは拡張機能の「Live Share」という機能を使い、言葉では説明しづらいコードの部分はLive Shareを使って実際にコードを書いて見せる、ということを行って対応しています。

コード管理の部分では先ほどご説明したReposにGitで管理されているので、コードをPushなどするとPipelinesのほうに移り、CI/CDが実行されます。このCI/CDの結果などはTeams上に再び通知されるといったように、本当にAzure DevOpsのみで完結する開発の流れになっています。

Azure DevOpsの使用例

ここでAzure DevOpsの使用例ということで、Pipelinesの実際どのように構築しているかを見せます。Azure DevOpsの画面はこのようになっています。BoardsやReposがあり、今回見せたいのがPipelinesの画面になります。

Pipelinesでは、CI/CDをGUIベースで組み込めます。これによって本番環境の違いを意識せずに、ストレスなく開発できました。Azureを使った開発の流れはここまでになります。

(次回につづく)