Azure
2018/06/22
Microsoft Azure のビッグデータ基盤と
AI テクノロジーを活用しよう
日本マイクロソフト株式会社
クラウドソリューションアーキテクト
高木 英朗 (Takagi Hideo)
本セッションでお伝えすること
Microsoft Azure におけるビッグデータ基盤と AI 関連サービスについて、
デモを交えながらご紹介します。
AI サービス
• Cognitive Services (Vision API)
ビッグデータ基盤
• Azure Databricks
• Azure Data Lake
• HDInsight
3
1. Microsoft AI Platform Overview
2. Cognitive Services
3. Azure Databricks
4. Azure Data Lake
5. HDInsight
Microsoft AI Platform
Overview
5
データの増大
2020 年 44 ZB
クラウド活用企業
現在 80%
AI への投資
2017 年 300% 増加
クリックストリーム
センサー
動画
SNS
Web
デバイス
リレーショナル
アプリ
ビッグデータ
SQL
クラウドAI
アナリティクス
6
Azure AI Services
Azure Infrastructure
Tools
Cognitive Services
Pre-Built AI
Azure Cognitive Services
Conversational AI
Azure Bot Service
Custom AI
Azure Machine Learning
自然界最悪の発がん物質であるカビ毒“アフラトキシン”
に汚染されたコーンを自動認識・自動選別するデータドリ
ブン型穀物ソーター
• 食料安全と廃棄削減で世界的問題
• 秒速3.5mで流れ落ちるコーンから汚染コーンを即時
認識してエアジェット(コンプレッサー)で分離
• 従来技術では実現不可能だったが、独自のソート技
術にクラウドとデータ解析の新技術を融合しプロトタ
イプ機で実用化に目途、年内に商用化予定
• 画像認識とデータ解析にAzureおよびFPGAを利用
90%
5%
顕微鏡を使った研究開発の課題に対処する、リーンな
新しい顕微鏡用デジタルソリューションプラットフォーム
研究者が必要とする様々なアプリケーションを参加者が
自由に作成・登録し、コミュニティで共有することができる
また研究者は自分が必要なアプリを組み合わせてワーク
フローとして利用することができる
アプリ&ワークフロー利用例:
• APIで顕微鏡をcapta astraへ接続
• 画像ファイルアップロード、画像変換
• オブジェクト検知
• 画像解析(目的別にオブジェクト集計、可視化)
• レポート送信
顔を検出して年齢・性別を推定
顔から感情を検出する
画像に含まれるテキストを抽出する
カスタム画像認識
Custom Vision Demo
• ペットボトルの品質検査
• コンクリートの外観検査
• 商品の判別
18
Azure AI Services
Azure Infrastructure
Tools
Azure Databricks
20
25%
11%
7%
5%
4%
5%
18%
6%
13%3%
3%
CONSULTING (IT)
SOFTWARE
(SAAS, WEB, MOBILE)BANKING / FINANCE
ADVERTISING / MARKETING / PR
ECOMMERCE / RETAIL
HEALTH / MEDICAL / PHARMACY / BIOTECH
CARRIERS / TELECOM
EDUCATION
PUBLISHING / MEDIA
COMPUTERS / HARDWARE
OTHER
21
1,615
RESPONDENTS
900
DISTINCT ORGANIZATIONS
ARCHITECTS
ACADEMICS / RESEARCH
21%
TECHNICAL
MANAGEMENT
10%
5%DATA
ENGINEERS
41%
DATA
SCIENTISTS
23%
22
91%
PERFORMANCE
EASE OF
PROGRAMMING
76%EASE OF
DEPLOYMENT
69%
ADVANCED ANALYTICS
82%
51%
REAL-TIME
STREAMING
23
© Databricks 2018
SQL Query
Data Frame
Unresolved
Logical Plan
Logical Plan Optimized
Logical Plan
Selected
Physical
Plan
RDDsPhysical
Plans
CostModel
Catalog
Analysis Logical
Optimization
Physical
Planning
Code
Generation
Catalyst
分散処理
オプティマイザー
インメモリ処理
オープン ソースの並列分散処理エンジン
24
25
Bigdata システムの要件をクリアする ソリューション
Microsoft Azure
26
多様な接続機能を提供
Data
Factory
Azure
Databricks
Blob
Storage
Cosmos DB
SQL
Database
SQL Data
Warehouse
Data Lake
Store
Power BI
Cosmos DB
Spark Connector
JDBC / ODBC
connection
DBFS
mount
DBFS
mount
Event Hubs
Connector SQL DB
Connector
SQL DW
Connector
Event Hubs
Kafka
Streaming
Data Factory
Activity
Kafka on
HDInsight
27
構造化データ
バッチ分析 ⇒ 限られた時間で大量データを処理をしたい
分析アプリ
ダッシュボード
ログ、メディア
r
センサーデータ
CDR、POSデータなど
データ加工集計非構造化データ
基幹業務
DWH
システム
オンラインデータ
28
準リアルタイム分析 ⇒ データの生成から遅延時間を最小限にした分析をしたい
加工・集計データ
ストリームデータ
ストリーム処理
センサーデータ
CDR、POS データなど 分析アプリ
ダッシュボード
データリポジトリ
29
蓄積された大量データを活用して高度な分析を実施したい
データコレクター
ストリームデータ
センサーデータ
CDR、POS など
データリポジトリ
基幹業務
オンラインデータ
アドバンスト
アナリティクス
分析アプリ
ダッシュボード
30
31
ジョブ
スケジュール
スクリプト
記述部分
Jupyter Notebook の操作性と Zeppelin のビジュアライゼーション+α
グラフ種別
実行結果
詳細表示
Read Data Demo
Azure Storage を
マウント
JSON データを
ロード
View を作成 Spark SQL
実行
Blob
Storage Azure
Databricks
Structured Streaming
35
準リアルタイム分析 ⇒ データの生成から遅延時間を最小限にした分析をしたい
加工・集計データ
ストリームデータ
ストリーム処理
センサーデータ
CDR、POS データなど 分析アプリ
ダッシュボード
データリポジトリ
36
ライブストリームデータ
インプットテーブル クエリ― アウトプットテーブル
外部データストア
センサーデータのリアルタイムな分析 モバイル端末データのリアルタイムな可視化
金融市場の変化をリアルタイムに追跡 POS端末データのリアルタイム分析と需要予測
Structured Streaming Demo
Kafka
データストリームの定義
ストリームデータの
表示
SQL DB データ
との結合
結合データの
表示
SQL DBKafka Azure
Databricks
Azure
Databricks
Machine Learning
39
蓄積された大量データを活用して高度な分析を実施したい
データコレクター
ストリームデータ
センサーデータ
CDR、POS など
データリポジトリ
基幹業務
オンラインデータ
アドバンスト
アナリティクス
分析アプリ
ダッシュボード
40
• Spark MLlib プリインストール済
• DataFrame ベースの API サポート
• Tungsten や Catalyst による最適化
• 言語・ML アルゴリズムをとおして 統一された API を提供
• ML pipeline サポート
• 複数の ML 処理を一つのパイプラインとして記述
• MMLSpark
• マシンラーニング・モデルの構築に必要なデータ操作を効率化
• Model Selection
• ハイパーパラメータチューニングの支援
並列分散機械学習を大規模データセットに対して実行
41
Spark ML
Algorithms
Machine Learning Demo
SQL DW から
データロード
データを処理 トレーニング 評価
SQL Data
Warehouse Azure
Databricks
43
Deep Learning ライブラリ / フレームワークのサポート
• Cognitive Toolkit, TensorFlowOnSpark,
BigDL 等のライブラリ / フレームワーク
• Spark Deep Learning Pipelines
• 事前学習済みモデルの適用
• 転移学習
• Python ベースの ハイレベル API
• 分散ハイパーパラメタチューニング
• DataFrame や SQL にモデルをデプロイ
Spark クラスタ上でハイパーパラメタチューニング
転移学習への応用
Azure Data Lake
45
HDInsight
Spark, Hive,
Storm, Kafka
Data Lake
Analytics
YARN
Azure
Databricks
ストレージ
Azure Data Lake Store
• 無制限に格納できるストレージ
• データフォーマットを問わない
• 分散型で分析処理の性能が高い
バッチ分析ツール
Azure Data Lake Analytics
• 「サーバレス」の分析エンジン
• SQL に近い U-SQL 言語
• 柔軟スケール&大量データ処理
• ジョブ単位の課金
Data Lake
Store
BLOB
Storage
47
Data Lake Analytics
Azure SQL DW Azure SQL DB
Azure
Storage Blobs
Data Lake Store SQL Server
Azure VM
✓ サーバ レスの分析クエリ サービス
✓ きめ細かい分析処理を大量データに最適化
✓ 「U-SQL」クエリ言語を使用
@rows =
EXTRACT
name string,
id int
FROM “/data.csv”
USING Extractors.Csv();
OUTPUT @rows
TO “/output.csv”
USING Outputters.Csv();
Azure Storage 系だけでなく、
Database Services にも
クエリ実行が可能
48
U-SQL で分析処理を記述
Data Lake Analytics に
サブミット
分散処理の実行プラン
自動的で生成
ワーカーノードを割り当て
処理が実行される
@rows =
EXTRACT
name string,
id int
FROM “/data.csv”
USING Extractors.Csv( );
OUTPUT @rows
TO “/output.csv”
USING Outputters.Csv();
✓ SQL ライクなシンプルなクエリ言語
✓ スキーマ定義済み、未定義データ対応
✓ C#, R, Python 拡張
SELECT … FROM …
WHERE
GROUP BY …
HAVING
JOIN
OVER
+
49
@tweet =
EXTRACT date string,
time string,
author string,
tweet string,
FROM “/Input/TwitterHistory.csv”
USING Extractors.Csv();
@result =
SELECT author.ToUpper AS author,
COUNT(*) AS tweetcount
FROM @tweet
GROUP BY author;
OUTPUT @result
TO “/Output/TwitterAnalysis.csv”
ORDER BY tweetcount DESC
USING Outputters.Csv();
①EXTRACT
保存されているファイルの
フォーマットを読み取って
カラム名を付与
②SELECT
付与したカラム名を使って
クエリを実行
C# 関数の埋め込み
③OUTPUT
結果を CSV 形式で出力
~ ユーザーごとのツイート数を数えたい ~
52
ビルトインの集約関数
• AVG
• ARRAY_AGG
• COUNT
• FIRST
• LAST
• MAP_AGG
• MAX
• MIN
• STDEV
• SUM
• VAR
データ型
Numeric
byte, byte?
sbyte, sbyte?
int, int?
uint, unint?
long, long?
decimal, decimal?
short, short?
ushort, ushort?
ulong, unlong?
float, float?
double, double?
Text
char, char?
string
Complex
MAP<K>
ARRAY<K,T>
Temporal DateTime, DateTime?
Other
bool, bool?
Guid, Guid?
Byte[]
http://usql.io/
結合
• INNER JOIN
• LEFT or RIGHT or FULL OUTER JOIN
• CROSS JOIN
• SEMIJOIN
• Equivalent to IN subquery
• ANTISEMIJOIN
その他、パラメータの利用やウィンドウ関数等詳細情報やチュートリアルは左記 URL を参照
53
U-SQL に R や Python を組み込んで高度な分析処理を実行することが可能
• 不正検知
• 販売予測
• 倉庫効率化
• 予知保全
• など
組み込み方法は以下の 2 つ
✓ U-SQL 内に直接スクリプトを記述
✓ スクリプトファイルを作成して U-SQL 内に読み込み
https://docs.microsoft.com/ja-jp/azure/data-lake-analytics/data-lake-analytics-u-sql-python-extensions
https://docs.microsoft.com/ja-jp/azure/data-lake-analytics/data-lake-analytics-u-sql-r-extensions
AI を使って大量の画像データから、システムが理解できる情報を抽出して活用する
表情を検出し、ポジ / ネガ分析をする
イベント等での効果測定
その他大量処理
大量のサムネイル画像一括作成
OCR で画像検索キーワード作成
画像の意味を読み取りタグ付け
画像を基にした関連性の発見
類似点を抽出してレコメンデーション等に活用
55
Cognitive Services の学習済みモデルを使った
AI 拡張機能を U-SQL で実行
イメージング:
• 顔を検出する
• 感情を検出する
• 画像の内容を読み取ってタグ付けする
• OCR (文字認識)
テキスト:
• キー フレーズ抽出
• 感情分析
▼ビルトインの Cognitive 機能
56
REFERENCE ASSEMBLY ImageCommon;
REFERENCE ASSEMBLY ImageEmotion;
@emotions_from_extractor =
EXTRACT FileName string,
NumFaces int,
FaceIndex int,
RectX float,
RectY float,
Width float,
Height float,
Emotion string,
Confidence float
FROM @"/images/{FileName}.jpg"
USING new Cognition.Vision.EmotionExtractor();
画像から顔を検出し、感情を推定する
https://github.com/Azure-Samples/usql-cognitive-imaging-emotion-detection-hello-world
Data Lake - Cognitive Demo
58
REFERENCE ASSEMBLY ImageCommon;
REFERENCE ASSEMBLY ImageOcr;
@imgs =
EXTRACT
FileName string,
ImgData byte[]
FROM @"/images/{FileName}.jpg"
USING new Cognition.Vision.ImageExtractor();
@ocrs =
PROCESS @imgs
PRODUCE FileName,
Text string
READONLY FileName
USING new Cognition.Vision.OcrExtractor();
画像に含まれるテキストを抽出する
https://github.com/Azure-Samples/usql-cognitive-imaging-ocr-hello-world
59
REFERENCE ASSEMBLY ImageCommon;
REFERENCE ASSEMBLY ImageTagging;
@imgs =
EXTRACT
FileName string,
ImgData byte[]
FROM @"/images/{FileName}.png"
USING new Cognition.Vision.ImageExtractor();
@tags =
PROCESS @imgs
PRODUCE FileName,
NumObjects int,
Tags SQL.MAP<string, float?>
READONLY FileName
USING new Cognition.Vision.ImageTagger();
画像の意味を理解してテキスト化する
https://github.com/Azure-Samples/usql-cognitive-imaging-object-tagging-hello-world
60
事例 URL https://customers.microsoft.com/en-us/story/gifu-u
大学本来の価値を向上させる "研究 IR" 実践に向け、膨大な情報資産を多様な書式・形式のま
ま管理し、分析・活用する画期的な情報基盤を、クラウドで実現
<背景と狙い>
• 「岐阜大学の将来ビジョン」を強力に後押しするために、大
学 IR に必要な情報基盤を追求。
• 多種多様な活動を行っている教員たちを正しく評価し、各
人のモチベーションを高めていくためにも、学内にある生の
データを集めることが、もっとも重要なことだった。
• 事務員の PC の中に、Excel などにまとめられた生のデータ
が数多く保存されていたのです。システムが定義するデータ
構造の枠内に納まらなかった、そうした生のデータを集めて、
分析できるように環境を整えることが重要だった。
<導入効果>
• 学内のあらゆるデータを Azure Data Lake Store で管理し、
そのデータを検索する仕組みとして Azure Search を活用。
• 「今までは、漠然と推測していた事柄が、データによって裏付
けられ、グラフなどの形ではっきりと把握できるようになったこ
とは、大きな成果」。
「SPA=製造小売業」のお客様の抱える課題を解決
<背景>
• コピー機の主戦場は企業の Office だったが、ビジネスを拡大するためにお
客様が活躍する現場、社会に広げて、データを集めて解析して価値の出る
ように可視化→ビッグデータの活用
<課題>
• これまでの考え方では ビックデータを始められない
• マシン/IaaSベースでは予算・調達が足かせに
• 試験的な取り組みなので、リソースが少ない
• 多種、多量なデータ管理方法確立に時間がかかる
• 製造小売業において、様々なデータを扱わなければならない
• SNS、店舗画像、POS、etc…
• これらのデータを読み込んだ段階でどういう風に処理するかを決めておくの
は非常に難しい
<導入メリット>
• Azure Data Lake で低コストに始めることができた。
• スキーマ オン リードのためまずデータを保存できる。
• Cognitiveを使ってツイートされた画像を分析して、性別、年齢推定等
AI 時代を生き抜くためのビッグデータ基盤 ~リコーの実案件で見えたAzure Data Lakeの勘所~
https://youtu.be/zfD7d0Kqk_s
63
目的
• 企業が「ネットゼロ」の水利用
を達成するのを支援する
• 世界中から水の利用プロセス
を収集する
テクノロジー
• Advanced Analytics
• Azure IoT
• SQL DW
• Data Lake Store
• Power BI & Dynamics
365
Benefits
• 世界各地のお客様にプラン
ト内測定を提供
• 冷却塔のリアルタイムセンシ
ングと冷却ストリームの制御
“世界のすべての水がそこにあります。それをより効率的に使うだけです”
– Arjan Boogaards, General Manager EMEA, Nalco Water, an Ecolab company
Reference
事例: 水のネットゼロ利用の達成を支援する
https://youtu.be/BB_QbLUX75Y
Azure HDInsight
すぐに使えるクラウド上の Hadoop / Spark 環境
⚫ Hortonworks HDP ディストリビューション
⚫ 日本では東西両方のリージョンで利用可能
⚫ 豊富なクラスタータイプ
⚫ Hadoop
⚫ HBase
⚫ Storm
⚫ Spark
⚫ R Server on Spark
⚫ Interactive Hive
⚫ Kafka
66
67
タイプ 概要
Hadoop Hadoop エコシステムの中核を構成する分散ファイル システムと分散アプリケーションフレームワー
ク。
Spark ビッグ データ分析アプリケーションのパフォーマンスを向上させるメモリ内の処理をサポートする、並
列処理のフレームワーク。Spark は SQL、ストリーミング データ、機械学習に対応。
HBase Hadoop 上に構築される NoSQL データベースです。数十億行 x 数百万列に達するような大
量の非構造化データと半構造化データへのランダム アクセスが可能で、強固な一貫性が提供さ
れる。
Storm 大量のデータ ストリームを高速処理するための分散型リアルタイム計算システム。
R Server R 言語を使った高度な分析を分散フレームワーク上で実行。
Kafka 分散ストリーミング プラットフォーム。
Interactive
Query
YARN 上に Daemon を常時起動し、Hive クエリ時のオーバーヘッドを減らして高速化。
Spark 基盤上で完全な R を高速実行する仕組み
Data
Frame HDFS
YARN Resource
Management
Spark
Executor HDFS
Worker
Task
HDFS Name
Node
ScaleR
Master Task
Finalizer
Initiator
Edge Node
Spark
Spark
Driver Spark
Executor HDFS
Worker
Task
Spark
Executor HDFS
Worker
Task
Remote Execution:
ssh
Web Services
DeployR
R Tools for Visual Studio
BI Tools &
Applications
Jupyter Notebooks
Thin Client IDEs
https://
https://
70
71
Memory + SSD cache
72
73
Azure Data Lake Store
Azure BLOB Storage
使いやすさカスタマイズ性
管
理
コ
ス
ト
の
削
減 IaaS クラスター PaaS (マネージド) クラスター Big data as a Service
BigData
Analytics
BigData
Storage
74
構造/非構造化データ
ローデータ蓄積
(データ レイク)
ホットデータ収集
バッチ / インタラクティブ /
Advanced Analytics /
Stream
データソース
Operational
Systems
ERP
Master Data
Social
Sensors
Click Stream
Azure Data Lake Store
Azure SQL DW
W
バッチ / インタラクティブ /
Advanced Analytics /
Stream
バッチ / Advanced
AnalyticsBlob Storage
コールドデータ収集
Azure Data Factory
バッチ / Advanced
Analytics / AI
Database
Azure SQL DW
可視化 / 分析 App / Bot
75
カスタマイズ可能な Cognitive Services
Custom Vision
https://www.customvision.ai/
Custom Speech
https://cris.ai
Language Understanding (LUIS)
https://www.luis.ai
Custom Translator
https://portal.customtranslator.azure.ai/
ビッグデータ基盤
Azure Databricks チュートリアル
https://docs.microsoft.com/ja-jp/azure/azure-databricks/databricks-extract-load-sql-data-warehouse
Azure Data Lake チュートリアルやリファレンス
http://usql.io
HDInsight (Hadoop / Spark / Kafka / HBase / Interactive Query / Storm / R Server) チュートリアル
https://docs.microsoft.com/ja-jp/azure/hdinsight/
© Copyright Microsoft Corporation. All rights reserved.
カスタムの音声認識モデルを作成
ユーザーの環境に合わせて音声認識のモデ
ルを適応させることで、認識率を向上させる
Custom Speech Service
78
自然言語からの文意やキーワードの抽出
79
ロード 学習 テスト デプロイ
対訳文
ビジネスや業界で使用される用語を解釈できるカスタムの翻訳モデルを構築
・Neural Machine Translation (NMT)
・Statistical Machine Translation (SMT)
https://portal.customtranslator.azure.ai/

Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう