Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

機械学習サービスを開発 / 運用していく時に役立つ知識をまとめてみた【Python x Azure】

はじめに

こんにちは、"umi-mori"というクリエイターネームで活動しています、森重です。
この記事のターゲットと概要は以下の通りです。

  • ターゲット / Target
    • 機械学習に携わる研究者
    • 機械学習を用いたソフトウェアに従事する方々(エンジニア / デザイナー / プロマネ / マーケター / セールス / コンサル / 経営者など)
  • 概要 / Abstract
    • 機械学習をAzureというクラウドサービス上で実行 / 運用していく場合に知っておくべき知識の紹介。

求ム!Pythonを使ってAzureで開発する時のTips!【PR】日本マイクロソフト Advent Calendar 2020 の23日目の記事です。

また、本記事の作者(私)はAzure Fundamentalの資格を取得しているものの(証明書)、まだまだ学び足りないことがたくさんあります。そのため、もしも「こういうサービスもあるよ!」や「こういうメリットとデメリットもあるよ!」などの知見がございましたら、ぜひコメントでシェアしていただけると幸いです。

Python x Azureの理由

近年、技術の選択肢が増えてきたため、技術選定をしっかりと行うことは研究や開発を行う上で、重要視されてきました。そのため「なぜPythonを使うのか?」「なぜMicrosoft Azureを使うのか?」について、はじめに説明したいと思います。

なぜPythonを使うのか?

Pythonを使う理由は、主に次の3つあると考えます。

1. アクティブデベロッパーが多さ

2019年のアクティブデベロッパー数においては、世界で8.2Mを記録し、Javaを抜いて2位になりました。機械学習(Machine Learning; ML)の領域において、最もポピュラーな言語だと言えるでしょう。

チーム開発を行う上で、多くの人が習得している言語を選定することは重要な検討要素の一つです。また、Pythonの利用者が多い分、ドキュメント(技術文書)も豊富なことも特徴として挙げられます。

【参考】機械学習によりPythonがJavaを超え開発者数2位のプログラム言語へ
https://ited.tech/artificial-intelligence/machine-learning-ai-made-python-second-most-used-language-over-java/

2. 機械学習ライブラリの豊富さ

ライブラリとは、すでにまとめられた便利な機能や関数のことを言います。Pythonは、標準ライブラリに加えて、機械学習の研究者や開発者がオープンソースソフトウェア(Open Source Software; OSS)として外部ライブラリを公開していることから、ライブラリが大変豊富になっています。ライブラリが豊富であることは、工数時間の短縮に繋がり、研究においてもサービス開発においても大きなメリットになります。

【参考】機械学習・人口知能開発に強いPythonライブラリ おすすめ7選
https://proengineer.internous.co.jp/content/columnfeature/13907

3. コード量の少なさ

最後に、コード量の少なさが挙げられます。これに関しては、トレードオフ(実行速度の遅さなど)があるのですが、初学者にとっての習得のしやすさと工数時間の短縮というメリットに繋がります。

【参考】Python / C言語との記述法の違いを比較
https://algorithm.joho.info/programming/python/c-language-kijutsu-hikaku-chigai/

なぜMicrosoft Azureを使うのか?

Microsoft Azureを使う大きな理由として、主に次の3つあると考えます。

1. CAPEXにおける優位性

CAPEXとは、Capital Expenditureの略で、資本的支出という意味を持ちます。通常、研究室で計算機サーバーを構築したり、ソフトウェアサービスを運用するためのオンプレミスサーバーを構築したりする場合、資本的支出は大きくなってしまいます。

研究で必要になったタイミングで、高額の機械を購入する場合、相見積もり・審査・減価償却などの様々な手続きが伴う可能性があります。しかし、クラウドの場合CAPEXがかからず、すぐにハイスペック環境で実行することができます。

【参考】企業活動におけるCAPEXとOPEXの定義
https://www.clouderp.jp/blog/what-is-capex-opex

2. ストレージの弾力性

機械学習を用いソフトウェアサービスでは、ストレージの弾力性も一つの大きなメリットになると考えられます。学習データが増えていくような設計の場合、オンプレミスに追加していくことは保守・運用面でも手間とお金がかかります。

しかし、クラウドを用いることで、任意のタイミングでわずか数分でストレージを追加することができます。

【参考】クラウドストレージの基礎知識
https://2sq7d632aduy7flhh6iaxnby-wpengine.netdna-ssl.com/jp/wp-content/uploads/sites/2/2017/08/CDN-Broc-WP-vol01-r2-web.pdf

3. コンプライアンスの高さ

上記の二つはクラウドを利用するメリットでした。では、AWS(Amazon Web Service)やGCP(Google Cloud Platform)などの他のクラウドサービスと比べた時のメリットはなんでしょうか?

特筆すべきメリットとして、「クラウドコンプライアンスの高さ」が挙げられます。クラウドコンプライアンスとは、クラウド業界のガイドラインや国内外の法律における、クラウドの使用に関する規制基準です。個人情報などの管理・保護ポリシーや法令の遵守などに関する90以上の基準をAzureは満たしていることが特徴として挙げられます。そのため、個人情報・生体情報・医療情報などのセンシティブな情報を扱う研究やサービスの場合は、Azureを使うことをおすすめします。

また、余談にはなりますが、MicrosoftのサービスであるMicrosoft 365(Office 365)Dynamics 365GithubVS Codeなどとの連携による利便性の高さ(いわゆる垂直統合モデル)なども挙げられます。

【参考】Azure コンプライアンス
https://azure.microsoft.com/ja-jp/overview/trusted-cloud/compliance/

サービスの全体図

まず全体像として、以下のようなサービスに分類しました。

A. 開発者向けサービス
B. データ基盤サービス
C. 分散処理分析サービス
D. 実行環境サービス
E. AI / MLを活用したサービス
F. デプロイ(公開)のサービス

そして、それぞれのサービス名を以下の「保存版まとめ画像(図)」としてまとめました。
abstract.png
より具体的な特徴と押さえておくべき知識を次にまとめました。

A. 開発者向けサービス

実際に機械学習のモデルなどを開発する方々(デベロッパーやデータサイエンティスト)にとって便利なサービスを紹介します。

サービス名 概要
1. Azure Machine Learning クラウド上で機械学習を実行するための基盤となるサービス。
2. Azure Machine Learning Studio GUIでモデルなどを組むことができるデータサイエンティスト開発者向けのWebポータルのサービス。
3. Azure Notebooks クラウド上で素早くPythonなどのコードを実行できるサービス(※ 2021/01/21に終了予定)。

A-1. Azure Machine Learning

  • クラウド上で機械学習を実行するための基盤となるサービス。
  • 深層学習(Deep Neural Network; DNN)やコンピュータビジョンなどの分野ではまだGUI化の課題はあるが、回帰やクラスタリングなどの基本的なモデルはGUIで実装可能。しかも、それぞれのモデルの予測精度などを比較するグラフなども出せる。
  • もちろんPythonでも実装可能(Tensorflowなどをインポートして、Jupyter Notebookなどでコーディング可能)。
  • Azure DevOpsPower BIへの導入が可能。

Azure Machine Learning - 公式サイト
https://azure.microsoft.com/ja-jp/services/machine-learning/

A-2. Azure Machine Learning Studio

  • GUIでモデルなどを組むことができるデータサイエンティスト開発者向けのWebポータルのサービス。

Azure Machine Learning Studio - 公式サイト
https://docs.microsoft.com/ja-jp/azure/machine-learning/overview-what-is-machine-learning-studio

A-3. Azure Notebooks

  • クラウド上で素早くPythonなどのコードを実行できるサービス。
  • 環境構築の必要がないことがメリットとして挙げられる。
  • 無料のサービス。
  • メモリ4 GB、データ1 GBの制限あり(2020年12月時点)。
  • パブリックプレビュー(試用期間のようなもの)が2021年1月21日に終了。

Azure Notebooks - 公式サイト
https://notebooks.azure.com/

【python初学者向け】さくっとMicrosoft Azure Notebooks上でpython書いてみた
https://qiita.com/Catetin0310/items/2f07e10f056e88e25f5b

How to use GPU in Jupyter Notebook?
https://azureai.devpost.com/forum_topics/33099-how-to-use-gpu-in-jupyter-notebook

B. データ基盤サービス

機械学習のサービス構築に欠かせないデータ基盤サービスを紹介します。

サービス名 概要
1. Azure Synapse Analytics(Azure SQL Data Warehouse) データ統合 / ウェアハウス / データ分析など統合された分析サービス。
2. Azure Data Lake 生のデータを大量に保管するためのデータレイクサービス。
3. Azure Data Factory サーバーレスのデータ統合サービス。
4. Azure Open Datasets 一般公開されているオープンデータへアクセスすることができるサービス。

B-1. Azure SQL Data Warehouse

  • データ統合 / ウェアハウス / データ分析など統合された分析サービス。
  • Azure SQL Data Warehouseの進化版。
  • サーバーレスと専用リソースから選択可能。
  • 複数のデータベースをまとめて管理 / 分析することが可能。
  • テラバイト / ペタバイト級のデータに対して実行可能。
  • AWSのRedshift、GCPのBigQueryに相当するサービス。
  • 負荷に合わせた自動スケーリングも可能。
  • データはPremium Storage(SSDを使用)に格納されるため、費用は高いが高速処理。

Azure Synapse Analytics - 公式サイト
https://azure.microsoft.com/ja-jp/services/synapse-analytics/

Azure SQL Data Warehouse が Azure Synapse Analytics に変わりました - 公式サイト
https://azure.microsoft.com/ja-jp/blog/azure-sql-data-warehouse-is-now-azure-synapse-analytics/

Azure SQL Data Warehouseを解説 【シリーズ Azureサービスいちから紹介】
https://azure-recipe.kc-cloud.jp/2017/12/sql_data_warehouse_2017adcal/

B-2. Azure Data Lake

  • 生のデータを大量に保管するためのデータレイクサービス。
  • ペタバイト級のファイル / 数十億個のオブジェクトの保存および分析可能。

Azure Data Lake - 公式サイト
https://azure.microsoft.com/ja-jp/solutions/data-lake/

B-3. Azure Data Factory

  • サーバーレスのデータ統合サービス。
  • Azure Synapse Analyticsと連携可能。

Azure Data Factory - 公式サイト
https://azure.microsoft.com/ja-jp/services/data-factory/

B-4. Azure Open Datasets

  • 一般公開されているオープンデータへアクセスすることができるサービス。
  • 天気 / 衛星映像 / 社会経済学データ / 公休日などにアクセス可能。

Azure Open Datasets - 公式サイト
https://azure.microsoft.com/ja-jp/services/open-datasets/

C. 分散処理分析サービス

収集されたデータを分析する際に便利なサービスを紹介します。

サービス名 概要
1. Azure HDInsight 大規模なデータ向けの分散処理フレームワークを提供するサービス。
2. Azure Databricks Azure HDInsightよりもシンプルに利用できる、Apache Sparkベースの分析サービス。

C-1. Azure HDInsight

  • 大規模なデータ向けの分散処理フレームワークを提供するサービス。
  • Apache Hadoop、Spark、Kafkaなどのフレームワークに対応。

Azure HDInsight - 公式サイト
https://azure.microsoft.com/ja-jp/services/hdinsight/

C-2. Azure Databricks

  • Apache Sparkベースの分析サービス。
  • Azure HDInsightよりもシンプルに利用可能。
  • コラボレーション機能 / 自動スケーリング機能なども利用可能。

Azure Databricks - 公式サイト
https://azure.microsoft.com/ja-jp/services/databricks/

D. 実行環境サービス

仮想マシン(Virtual Machine; VM)などの実行環境の選択肢もいくつかあるため、実行環境のサービスを紹介します。

サービス名 概要
1. Azure Virtual Machine 最も一般的な仮想マシンサービス。
2. Azure DevTest Labs 開発者用の仮想マシンなどを素早く構築するためのサービス。
3. Azure Lab Services ハッカソンや教育の時などに用いられる仮想マシンのサービス。

D-1. Azure Virtual Machine

  • 最も一般的な仮想マシンサービス。
  • CPUやGPUのスペックなどに応じて、費用は変動する。

Azure Virtual Machine シリーズ- 公式サイト
https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/series/

D-2. Azure DevTest Labs

  • Production環境とは分離された開発者用の仮想マシン(Virtual Machine; VM)とPaaS リソースを素早く構築するためのサービス。
  • VMのスペックや個数なども制限されているため、承認プロセスを省略して、構築することが可能。
  • 開発者に一時的に貸し出している形になるため、貸し出し終了後はインスタンスが自動で削除される。
  • Azure DevTest Labsが「テスト環境」にあたり、「プロダクション環境」は負荷に対する柔軟性の高い仮想マシンスケールセットなどが用いられる。

Azure DevTest Labs - 公式サイト
https://docs.microsoft.com/ja-jp/azure/devtest-labs/devtest-lab-overview

D-3. Azure Lab Services

  • ハッカソンや教育の時などに用いられる仮想マシンのサービス。
  • 講師や主催者の作成したラボに対して、生徒や参加者はアクセスすることが可能。
  • 参加者に応じたスケーリングも可能。

Azure Lab Services - 公式サイト
https://azure.microsoft.com/ja-jp/services/lab-services/

E. AI / MLを活用したサービス

人工知能(Artificial Intelligence; AI) / 機械学習(Machine Learning; ML)を活用したサービスを紹介します。

サービス名 概要
1. Azure Cognitive Services 文字 / 画像 / 音声などの認識を行うサービス。
2. Azure Bot Service 人間の代わりに質問に応答するようなボットサービス。
3. Azure Cognitive Search(Azure Search) AIを活用したモバイルやウェブ開発者のためのクラウド検索サービス。

E-1. Azure Cognitive Services

  • 文字 / 画像 / 音声などの認識を行うサービス。
  • 学習済みの環境が提供されているため、導入が簡単。

Azure Cognitive Services - 公式サイト
https://azure.microsoft.com/ja-jp/services/cognitive-services/

E-2. Azure Bot Service

  • 人間の代わりに質問に応答するようなボットサービス。
  • 文字と音声によるサポートが可能。
  • カスタマーサポートなどのサービスに導入可能。

Azure Bot Service - 公式サイト
https://azure.microsoft.com/ja-jp/services/bot-service/

E-3. Azure Cognitive Search(Azure Search)

  • AIを活用したモバイルやウェブ開発者のためのクラウド検索サービス。
  • 自然言語スタック / 視覚 / 言語 / 音声に対して利用可能。

Azure Cognitive Search - 公式サイト
https://azure.microsoft.com/ja-jp/services/search/

F. デプロイ(公開)のサービス

PythonやGUIで構築した機械学習モデルをウェブサービスやAPI(Application Programming Interface)などとして公開する場合に知っておくべきサービスを紹介します。ここでは、FlaskやDjangoと言われるPythonを用いたウェブフレームワークやNodeJSなどの他のサーバーサイド言語とPythonを組み合わせて構築するウェブサービスなども考慮して、紹介します。

アプリケーションの Azure コンピューティング サービスを選択する」という記事を参考にして、どこまでマシンのカスタマイズをしたいかに応じて、デプロイするためのサービスを選定すると良いと思います。

サービス名 概要
1. Azure Virtual Machine 最も一般的な仮想マシンサービス。
2. Azure App Services ウェブアプリやAPIの構築からデプロイまでを行うことのできるサービス。
3. Azure Functions イベントドリブン方のサーバーレスコンピューティングプラットフォームサービス。

F-1. Azure Virtual Machine

F-2. Azure App Services

  • ウェブアプリやAPIの構築からデプロイまでを行うことのできるサービス。
  • VMより自由度は低いが、サービスを運用する上で必要な最低限のことはこのサービスで実施可能。

Azure App Services - 公式サイト
https://azure.microsoft.com/ja-jp/services/app-service/

F-3. Azure Functions

  • イベントドリブン方のサーバーレスコンピューティングプラットフォームサービス。
  • 実行したい関数などを簡単にデプロイできる。様々な言語で実装可能(.NET、node.js、 Javaなど )。

Azure Functions - 公式サイト
https://azure.microsoft.com/ja-jp/services/functions/

おわりに

いかがだったでしょうか?

Azureを用いたデータサイエンスやソフトウェア開発の経験のない人にもある人にも、引き出しを増やしたり、体系化された理解につながったりした機会になったら幸いです。

MicrosoftはAzure / Teamsの急成長している会社であり、これからの発展にも期待ですね。もう少しマクロなMicrosoftのハードウェアやソフトウェアを知りたい場合は、以下の記事もぜひご参照ください。

【参考】2020年 Microsoftのプロダクトまとめ!
https://note.com/umi_mori/n/n0abe3126e989

それでは、最後まで読んでください、ありがとうございます。
もしも参考になった方は、LGTM / ストック / Twitterのフォローしてくれたら嬉しいです!

次回は、@m-naokiさんの記事になります!

参考文献

umi_mori
リサーチャー x フリーランスエンジニア。某IT企業のCTO。研究では、リハビリにおけるヒトの学習に対して、脳波とMRIでデータサイエンス。 #脳科学 #研究 #フリーランス #エンジニア #人工知能 #AI #機械学習 #慶應 #リハビリ #教育 #障害 #CTO
https://www.umi-mori.jp
ai-lab
ai-labというデータサイエンス系のクラウド研究室です! ai-labという情報プラットフォームへ投稿したり、slackで議論をしたりしています。
https://www.ai-lab.app/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away