SlideShare a Scribd company logo
1 of 74
Download to read offline
1 © NEC Corporation 2017
Data Scientists
Love
SQL Server
2017年09月06日
NECソリューションイノベータ株式会社
太田 智行
db tech showcase Tokyo 2017
3 © NEC Corporation 2017
Data Scientists Love SQL Server
▌太田 智行(SQL Server DBA)
データベース技術専門部隊にてSW開発か
らSIまで様々経験。現在はSQL Server
を専門にコンサルタントに従事。
現在、翔泳社 DBOnline にて SQL
Server の連載記事を執筆中。
次期 SQL Server すごいですね!
Python & GPU で Deep Learning できる
そうじゃないですか!!
SQL Server すごいですよ!
AI分野に毎年 $12 Billion 投資だそうですからね。
本気です!!
Data Scientist
SQL Server DBA
http://enterprisezine.jp/author/524
▌友永 康之(Data Scientist)
AI/Deep Learningの現場運用コンサル
ティングで実績多数(5年以上)。
2016年10月に共著した「金融行動に対
する人工知能の実証研究」が日本マーケ
ティング学会でベストペーパー賞を受賞
http://www.j-mac.or.jp/prize/
4 © NEC Corporation 2017
ただいま 第三次AIブーム 真っ只中
▌世の中の動向
キーワード『AI Deep Learning』
過去5年 検索ランク推移
出典:Google Trends (2017年5月30日)
5 © NEC Corporation 2017
ただいま 第三次AIブーム 真っ只中
▌世の中の動向
キーワード『AI Deep Learning』
過去5年 検索ランク推移
AI時代の寵児『NVIDIA Corp』
過去5年 株価推移
出典:Google Trends (2017年5月30日) 出典:Google Finance (2017年5月30日)
6 © NEC Corporation 2017
ただいま 第三次AIブーム 真っ只中
▌世の中の動向
▌日本における国の後押し「AIの社会実装」を推進せよ
平成29年度 タイトル 予算額
文部科学省 人工知能/ビッグデータ/IoT/サイバーセキュリティ統合プロジェクト 71.1億円
総務省 生産性向上につながるIoT・ビッグデータ・AI 等の活用推進 25.8億円
経済産業省 次世代人工知能・ロボット中核技術開発 45.0億円
キーワード『AI Deep Learning』
過去5年 検索ランク推移
AI時代の寵児『NVIDIA Corp』
過去5年 株価推移
出典:Google Finance (2017年5月30日)出典:Google Trends (2017年5月30日)
7 © NEC Corporation 2017
第三次AIをブームで終わらせないためには
AIはいまココ
お客様ビジネス直結の
本番運用を求められる段階
流行期 幻滅期 回復期 安定期
出典:ガートナー (2016年8月)
黎明期
① ニューラルネットワーク
“学習”がコンピュータで表現可能
② Bigdata
大量多様”学習”データがホスト可能
③ GPU(+API)
現実時間内で”学習”処理可能
《 AIブームを支える役者 》
8 © NEC Corporation 2017
第三次AIをブームで終わらせないためには
AIはいまココ
お客様ビジネス直結の
本番運用を求められる段階
黎明期 流行期 幻滅期 回復期 安定期
出典:ガートナー (2016年8月)
黎明期
① ニューラルネットワーク
“学習”がコンピュータで表現可能
② Bigdata
大量多様”学習”データがホスト可能
③ GPU(+API)
現実時間内で”学習”処理可能
《 AIブームを支える役者 》
もくじ
1.AI プラットフォーム として なぜ
SQL Server が選ばれるのか
2.In Database Analytics の しくみ解説
3.In Database Analytics を さわってみよう
1.AI プラットフォームとして
なぜ SQL Serverが選ばれるのか
~ Data Scientists Love SQL Server ~
11 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌個別の特注SI:大がかり かつ 本番運用踏まえた機密性、可用性等の担保も必要
前処理
学習.py
予測.py
Job
学習
モデル
後処理
学習
データ
予測
データ
ETL AI DB
AI
ReportDWH/DM
基幹システム
API
BI
Client
12 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌SQL Server にインテリジェンスを ~ In-Database Analytics ~
13 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌その実体は「SQL Server Machine Learning Services」
前処理
学習.py
予測.py
Job
学習
モデル
後処理
学習
データ
予測
データ
ETL AI DB
AI
ReportDWH/DM
基幹システム
API
BI
Client
SQL Server
Machine Learning
Services
NEW
14 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌っと、いうことは…
前処理
学習.py
予測.py
Job
学習
モデル
後処理
学習
データ
予測
データ
ETL AI DB
AI
ReportDWH/DM
基幹システム
API
BI
Client
15 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌こうなるので…
前処理
学習.py
予測.py
Job
学習
モデル
後処理
学習
データ
予測
データ
ETL AI DB
AI
Report
SQL Server
Machine Learning
Services
NEW
DWH/DM
SQL Server
Agent
Service
SQL Server
Analysis
Service
SQL Server
Integration
Service
SQL Server
Database
Service
SQL Server
Reporting
Service
基幹システム
API
BI
Client
16 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
▌ワンボックスのAI プラットフォーム が出来上がる!!
基幹システム
API
BI
Client
Agent
Service
Machine Learning ServicesAnalysis
Service
Integration
Service
Database
Service
Reporting
Service
前処理
学習.py
予測.py
学習モデル
後処理
学習データ
予測データ
17 © NEC Corporation 2017
AI プラットフォームとして なぜ SQL Server が選ばれるのか
システム構成部品が少い:信頼性、保守性、連携性が極めて高い。
AIがSQL Serverのリッチな機能に相乗可能:機密性、可用性、性能性を容易に実装でき、Azureへの拡張性も高い。
入口と出口が標準化されたI/Fで接続可能:ユースケースや担当ベンダーごとの個別特注システムは不要&導入が容易。
In-Database Analytics の真価
3
1
2
B社
担当
A社
担当
C社
担当
入口:基幹システム 出口:AIアプリ
X社
担当
Y社
担当
Z社
担当
AI:SQL Server
t
f
in
Y社
担当
X社
担当
Z社
担当
18 © NEC Corporation 2017
Demo
画像認識AIによる毒キノコ判定
19 © NEC Corporation 2017
Deep Learning デモ
▌Y県自治体の課題
毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。
▌システムモデル
食用キノコ画像
毒キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
20 © NEC Corporation 2017
Deep Learning デモ
▌Y県自治体の課題
毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。
▌システムモデル
モデル
(AI)
学習
食用キノコ画像
毒キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
21 © NEC Corporation 2017
Deep Learning デモ
▌Y県自治体の課題
毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。
▌システムモデル
モデル
(AI)
学習
食用キノコ画像
毒キノコ画像
評価用キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
スマホ
22 © NEC Corporation 2017
Deep Learning デモ
▌Y県自治体の課題
毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。
▌システムモデル
モデル
(AI)
判定
結果
予測
可視化
学習
食用キノコ画像
毒キノコ画像
評価用キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
スマホ
23 © NEC Corporation 2017
Deep Learning デモ
▌Y県自治体の課題
毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。
▌登場人物
Data Scientist :AIを開発。
SQL Server DBA:AIをSQL Serverにデプロイ。
Developer :AIをアプリに組込み、結果を可視化。
24 © NEC Corporation 2017
Python Python
学習 予測
デモ①
Microsoft Azure
Linux GPU
SQL
Server
Data Scientist「私が慣れ親しんだ環境でAIを開発します。」
食用キノコ画像
毒キノコ画像
評価用キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
スマホ
Visual
Studio Code
モデル
(AI)
判定
結果
可視化
IDE
25 © NEC Corporation 2017
Python Python
学習 予測
Microsoft Azure
Linux GPU
SQL
Server
食用キノコ画像
毒キノコ画像
評価用キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
スマホ
Visual
Studio Code
モデル
(AI)
判定
結果
IDE
DBA「AIを『コピペ』のプロシージャ化 で SQL Server にデプロイします」
デモ②
学習
予測
ストアド
プロシージャ
ストアド
プロシージャ
26 © NEC Corporation 2017
Python Python
学習 予測
Microsoft Azure
Linux GPU
SQL
Server
食用キノコ画像
毒キノコ画像
評価用キノコ画像
Microsoft
Cognitive
Services
ETL
Bing
Image
Search
API
スマホ
Visual
Studio Code
モデル
(AI)
判定
結果
IDE
学習
予測
ストアド
プロシージャ
ストアド
プロシージャ
デモ③ Developer「SQL文1行でAIを実行し、結果を可視化します」
可視化
2. In Database Analytics の しくみ解説
注)SQL Server 2017 RC2 時点の情報です
28 © NEC Corporation 2017
CREATE PROCEDURE ユーザ定義プロシージャ
AS
BEGIN
EXEC sp_execute_external_script
@language = N'Python',
@script =N'#Python code#'
END
オペレーションモデル
SQL Server 2017
Machine Learning Services
Python Runtime
APP
結果返却
Python/Rコード実行
T-SQL
Java
C/C++
C#/VB.NET
PHP
Node.js
Python
Ruby
②
③
①
EXEC ユーザ定義プロシージャ
sp_execute
_external
_script の呼び出し
EXEC sp_execute_external_script
@language = N'Python',
@script =N'#Python code#'
もしくは
Server
29 © NEC Corporation 2017
sp_execute_external_script
CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS
BEGIN
execute sp_execute_external_script
@language = N'Python',
@script = N'
print(''Hello '' + InputParam)
MyOutput = MyInput
OutputParam = len(MyOutput)
print(OutputParam)',
@input_data_1 = N'SELECT 1, 2, 3;',
@input_data_1_name = N'MyInput',
@output_data_1_name = N'MyOutput',
@params = N'@InputParam varchar(10), @OutputParam int OUTPUT',
@InputParam = @input, @OutputParam = @output OUTPUT
WITH RESULT SETS (( C1 int, C2 int, C3 int ));
END
利用するスクリプト言語 ‘Python’
もしくは ‘R’ を指定。
30 © NEC Corporation 2017
sp_execute_external_script
CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS
BEGIN
execute sp_execute_external_script
@language = N'Python',
@script = N'
print(''Hello '' + InputParam)
MyOutput = MyInput
OutputParam = len(MyOutput)
print(OutputParam)',
@input_data_1 = N'SELECT 1, 2, 3;',
@input_data_1_name = N'MyInput',
@output_data_1_name = N'MyOutput',
@params = N'@InputParam varchar(10), @OutputParam int OUTPUT',
@InputParam = @input, @OutputParam = @output OUTPUT
WITH RESULT SETS (( C1 int, C2 int, C3 int ));
END
スクリプトを記述。
※.スクリプトファイルを指定することも可能。
R:source(script.R)
Python v2:execfile(script.py)
Python v3:exec(open('a_filename').read())
31 © NEC Corporation 2017
sp_execute_external_script
CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS
BEGIN
execute sp_execute_external_script
@language = N'Python',
@script = N'
print(''Hello '' + InputParam)
MyOutput = MyInput
OutputParam = len(MyOutput)
print(OutputParam)',
@input_data_1 = N'SELECT 1, 2, 3;',
@input_data_1_name = N'MyInput',
@output_data_1_name = N'MyOutput',
@params = N'@InputParam varchar(10), @OutputParam int OUTPUT',
@InputParam = @input, @OutputParam = @output OUTPUT
WITH RESULT SETS (( C1 int, C2 int, C3 int ));
END
スクリプトに渡すデータセットの
定義(任意) 。
※.現時点ではSELECTクエリで定義が必要。
EXEC proc はNG。
※.RではDataFrame、PythonではPandas
DataFrameとして渡される。
スクリプトに渡すデータセットの
変数名(任意)。
※.既定値はInputDataSet
32 © NEC Corporation 2017
sp_execute_external_script
CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS
BEGIN
execute sp_execute_external_script
@language = N'Python',
@script = N'
print(''Hello '' + InputParam)
MyOutput = MyInput
OutputParam = len(MyOutput)
print(OutputParam)',
@input_data_1 = N'SELECT 1, 2, 3;',
@input_data_1_name = N'MyInput',
@output_data_1_name = N'MyOutput',
@params = N'@InputParam int, @OutputParam int OUTPUT',
@InputParam = @input, @OutputParam = @output OUTPUT
WITH RESULT SETS (( C1 int, C2 int, C3 int ));
END
スクリプトから返されるデータ
セットの変数名の定義(任意)
※.既定値はOutputDataSet
データセットの列バインド
の定義(任意)
33 © NEC Corporation 2017
sp_execute_external_script
CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS
BEGIN
execute sp_execute_external_script
@language = N'Python',
@script = N'
print(''Hello '' + InputParam)
MyOutput = MyInput
OutputParam = len(MyOutput)
print(OutputParam)',
@input_data_1 = N'SELECT 1, 2, 3;',
@input_data_1_name = N'MyInput',
@output_data_1_name = N'MyOutput',
@params = N'@InputParam varchar(10), @OutputParam int OUTPUT',
@InputParam = @input, @OutputParam = @output OUTPUT
WITH RESULT SETS (( C1 int, C2 int, C3 int ));
END
スクリプトに渡すパラメータとスク
リプトから返るパラメータの定義
(任意) 。
34 © NEC Corporation 2017
sp_execute_external_script
DECLARE @NumOfRec int
EXEC MyProc @input='Python!', @output=@NumOfRec OUTPUT
SELECT @NumOfRec as NumOfRec
Go
35 © NEC Corporation 2017
Sample 1:irisデータセットを出力データセットとして返す
EXEC sp_execute_external_script
@language = N'Python',
@script = N'
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
iris_data = pd.DataFrame(iris.data, columns=iris.feature_names)',
@output_data_1_name = N'iris_data'
WITH RESULT SETS ((
"SepalLength" float not null,
"SepalWidth" float not null,
"PetalLength" float not null,
“PetalWidth” float not null ));
EXEC sp_execute_external_script
@language = N'R',
@script = N'
iris_data <- iris[, c(1:4)];',
@output_data_1_name = N'iris_data'
WITH RESULT SETS ((
"SepalLength" float not null,
"SepalWidth" float not null,
"PetalLength" float not null,
“PetalWidth” float not null ));
36 © NEC Corporation 2017
Sample 2:クエリ結果を入力データセットとして渡す
CREATE PROCEDURE [dbo].[load_iris_py_2](@cond_length int, @cond_width int, @num_of_rec int OUTPUT) AS
BEGIN
EXEC sp_execute_external_script
@language = N'Python',
@script = N'
df = iris_data_in
iris_data_out = df[ (df[''SepalLength''] > length ) & (df[''SepalWidth''] > width ) ]
count = len(iris_data_out)',
@input_data_1 = N'SELECT * FROM iris_py',
@input_data_1_name = N'iris_data_in',
@output_data_1_name = N'iris_data_out',
@params = N'@length int, @width int, @count int OUTPUT',
@length = @cond_length, @width = @cond_width, @count = @num_of_rec OUTPUT
WITH RESULT SETS (("SepalLength" float not null, "SepalWidth" float not null, "PetalLength" float not null, "PetalWidth" float not null));
END
GO
DECLARE @NumOfRec int
EXEC load_iris_py_2
@cond_length=7,
@cond_width=3,
@num_of_rec=@NumOfRec OUTPUT
SELECT @NumOfRec as NumOfRec
Go
37 © NEC Corporation 2017
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
BxlServer.exe
SqlSatellite.dll
Database Engine
Services
Launchpad
Services
Machine Learning Services
Python/R Process BxlServer Process
Named Pipe
①
②
③ ④
Named Pipe
⑤⑥
TCP/IP
conhost.exe
APP Server
sp_execute
_external
_script
38 © NEC Corporation 2017
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Database Engine
Services
Launchpad
Services
APP Server
sp_execute
_external
_script
インスタンスごとに
起動する常駐プロセス
インスタンスごとに
起動する常駐プロセス
39 © NEC Corporation 2017
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Database Engine
Services
Launchpad
Services
Named Pipe
①
②
APP Server
①
・SQL ServerはLaunchpadサービスに
クエリを送信する
・InputDataSetクエリが指定されてい
る場合はそれを実行する
②
・Launchpadは@language(e.g.
Python)で示された言語用の
Launcher(e.g. Pythonlauncher)
を選択する。
※ セキュリティのため、選択できるコンポーネントは
Microsoftによる発行もしくは認定されたものに限定され
ている。
40 © NEC Corporation 2017
①
②
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
Database Engine
Services
Launchpad
Services
Machine Learning Services
Python/R Process
Named Pipe ③
conhost.exe
APP Server③
・Launcherはプールからワーカーアカウン
トを取得し、そのワーカのセキュリティコ
ンテキストで言語ランタイム(e.g.
Python.exe)を起動する。
※ ワーカアカウントは既定で20個あり、これらのアカウントはすべて
ローカルWindowsグループ「SQLRUserGroup」に所属する。
※ Pythonスクリプトが並列プロセスを使用する場合、それらは同じ単
一のワーカーのコンテキストで起動される。
※ 言語ランタイムはコンソールアプリであるため伴ってconhost.exe
も起動される。
Pythonlauncher.dll
/Rlauncher.dll
41 © NEC Corporation 2017
sp_execute
_external
_script
Sqlsrvr.exe
Database Engine
Services
In-Database Analytics Architecture
Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Launchpad
Services
Named Pipe
①
②
③
APP Server Machine Learning Services
BxlServer.exe
SqlSatellite.dll
BxlServer Process
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
Python/R Process
conhost.exe
④
Named Pipe
④
・言語ランタイムはBxlServerを起動する。
・BxlServerは言語ランタイムと連携して
データの交換や作業結果の格納を管理する。
42 © NEC Corporation 2017
In-Database Analytics Architecture
Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Launchpad
Services
Named Pipe
①
②
③
APP Server
sp_execute
_external
_script
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
Python/R Process
conhost.exe
④
Named Pipe
Machine Learning Services
BxlServer.exe
SqlSatellite.dll
BxlServer Process
⑤
TCP/IP
Sqlsrvr.exe
Database Engine
Services
⑤ BxlServerはSQL Satellite(拡張性API)を使用し
以下のタスクを実行する。
・入力データのRead、入力引数のGet
・出力データのWrite、出力引数をSet
・エラー処理
・STDOUTとSTDERRをクライアントに書き戻す
43 © NEC Corporation 2017
⑤
In-Database Analytics Architecture
Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Launchpad
Services
Named Pipe
①
②
③
APP Server
sp_execute
_external
_script
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
Python/R Process
conhost.exe
④
Named Pipe
Machine Learning Services
BxlServer.exe
SqlSatellite.dll
BxlServer Process
TCP/IP
Sqlsrvr.exe
Database Engine
Services
⑥
⑥ SQL Serverは結果を取得し、関連
するタスクとプロセス(言語ランタ
イム、BxlServer)を終了
44 © NEC Corporation 2017
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Database Engine
Services
Launchpad
Services
APP Server
結果返却
45 © NEC Corporation 2017
In-Database Analytics Architecture
Sqlsrvr.exe Launchpad.exe
Pythonlauncher.dll
/Rlauncher.dll
Python.exe
/RTerm.exe
Python35.dll
/R.dll
PyLink.dll
/RxLink.dll
BxlServer.exe
SqlSatellite.dll
Database Engine
Services
Launchpad
Services
Machine Learning Services
Python/R Process BxlServer Process
Named Pipe
①
②
③ ④
Named Pipe
⑤⑥
TCP/IP
conhost.exe
APP Server
sp_execute
_external
_script
46 © NEC Corporation 2017
In-Database Analytics の真価
▌生産性
 データのエクスポート、インポートが不要。
 データの前処理、後処理にSQLが使える。pandasやnumpyでゴリゴリとスクリプトを書く必要はない。
▌機密性
 データが外に出ない。DB内で各種セキュリティ機能(アクセス制御、暗号化、監査など)で利用可能。
 学習モデルの利用(≒外部スクリプトの呼び出し)も容易に権限制御可能。
▌性能性
 データがプロセッサに隣接するため低レイテンシー。
 DBが持つ各種性能機能(カラムストア、インメモリ、データ圧縮、並列処理)が利用可能。
▌可用性
 AlwaysOn AG によってAI実行基盤のクラスタ構成が容易。
▌親和性
 上記をDBAのスキルで実装可能≒信頼性、保守性、連携性、拡張性が高い。
 Python/Rをそのままデプロイでき、アプリへの組込みもSQL文を実行するだけ。
47 © NEC Corporation 2017
機密:外部スクリプトロジックの隠蔽(=プロシージャ定義へのアクセス制御)
▌定義の参照はオブジェクトの所有者、または ALTER, CONTROL、TAKE
OWNERSHIP、VIEW DEFINITION のいずれかの権限を許可されたユーザのみ
GRANT VIEW DEFINITION TO ユーザ
48 © NEC Corporation 2017
機密:外部スクリプトロジックの隠蔽(=プロシージャ定義へのアクセス制御)
▌CREATE PROCEDURE <name> WITH ENCRYPTION によって難読化が可能
49 © NEC Corporation 2017
機密:外部スクリプトロジックの利用制限(=プロシージャ実行権限制御)
▌プロシージャ実行はオブジェクト所有者 または EXEC権限が必要
GRANT EXEC ON grant_exec_proc_demo TOユーザ
50 © NEC Corporation 2017
性能:カラムストアインデックスによるETL処理の高速化
CREATE CLUSTERED COLUMNSTORE INDEX
ColumnstoreIndex ON Table_with_5M_rows
CREATE PROCEDURE columnstore_demo AS
BEGIN
EXEC sp_execute_external_script
@language = N'Python'
, @script = N'
import pyodbc
from datetime import datetime
cnxn = pyodbc.connect(''DRIVER={ODBC Driver 13 for SQL
Server};SERVER=.;DATABASE=MLDEMODB;Trusted_Connection=yes
;'')
cursor = cnxn.cursor()
tsql = "SELECT SUM(Price) as sum FROM Table_with_5M_rows"
a = datetime.now()
with cursor.execute(tsql):
b = datetime.now()
c = b - a
for row in cursor:
print (''Sum:'', str(row[0]))
print (''QueryTime:'', c.microseconds, ''µs'')
'
END
GO
156239 µs
0 µs
3. In Database Analytics を さわってみよう
52 © NEC Corporation 2017
そのまえに: Standard Edition でも使えるの?
▌Machine Learning Services は Standard Edition でも使えます!
Enterprise Edition 比較で機能差は無し。
• (抜粋) Standard Edition has all the capabilities of in-database analytics included with Enterprise Edition,
except for resource governance. Performance and scale is also limited: the data that can be processed must fit in
server memory, and processing is limited to a single compute thread, even when using the RevoScaleR functions.
スレッド数やリソースのスケーラビリティに制約有り。
53 © NEC Corporation 2017
そのまえに:ML Services 制限事項(SQL17RC2時点)
▌プラットフォームは SQL Server on Windows のみ
SQL Server on Linux は今時点未サポート
Azure SQL Database や Azure SQL Data Warehouse では未サポート
▌Python言語は SQL Server 2017 でサポート
R言語は SQL Server 2016 でサポート
▌AlwaysOn による可用性構成は Availability Group のみサポート
Failover Cluster Instance は未サポート
54 © NEC Corporation 2017
In Database Analytics セットアップ
1.SQL Server Database Engine Services と
SQL Server Machine Learning Services のインストール
2.外部スクリプト実行機能の有効化
(EXEC sp_configure 'external scripts enabled', 1;)
3.SQL Server の再起動
55 © NEC Corporation 2017
In Database Analytics セットアップ
SQL Server 2016 の R Services
が改名してMachine Learning
Services となっている
56 © NEC Corporation 2017
In Database Analytics セットアップ
▌Machine Learning Services
Python/RをSQL Serverに統合した In
Database な実行環境を提供
• RC2時点でWindowsのみ
▌Machine Learning Server
スケーラブルなPython/Rの実行環境を
提供
• SQL Serverとは直接かかわりがない
– Windows版はSQL Serverのライセンスによっ
て提供される
• Windows/Linuxに対応
こっち(Machine
Learning Server)
は別物
57 © NEC Corporation 2017
補足:Python/R バージョン(SQL Server 2017 RC2時点)
▌Python:version 3.5.2
Anaconda 4.3 がインストールされる
• Continuum Analytics社が提供するPythonディストリビューション
Python HOME
• C:¥Program Files¥Microsoft SQL Server¥MSSQL14.MSSQLSERVER¥PYTHON_SERVICES
▌R:version 3.3.3
Microrosft R がインストールされる
• Revolution Analytics社(2015年Microsoft社が買収)が提供するRディストリビューション
R HOME
• C:¥Program Files¥Microsoft SQL Server¥MSSQL14.MSSQLSERVER¥R_SERVICES
58 © NEC Corporation 2017
Demo:Python バージョン確認(SQL Server 2017 RC2時点)
59 © NEC Corporation 2017
Demo:R バージョン確認(SQL Server 2017 RC2時点)
60 © NEC Corporation 2017
In Database Analytics 設定
ログインユーザへの外部スクリプト実行権限の付与
GRANT EXECUTE ANY EXTERNAL SCRIPT TO [ユーザ名]
外部スクリプトワーカの実行ユーザへのログイン許可
CREATE LOGIN [マシン名¥SQLRUserGroup] FROM WINDOWS
外部スクリプトワーカプールサイズの変更(既定値は20)
Configuration Manager->Launchpadサービス->詳細設定->外部ユーザの数を変更
Launchpad Servicesのサービスアカウントの権限設定
SeIncreaseQuotaPrivilege、SeChangeNotifyPrivilege、SeAssignPrimaryTokenPrivilege、SeServiceLogonRight が必要
61 © NEC Corporation 2017
詳細:In Database Analytics 設定
▌外部スクリプトワーカ
ログイン許可
• Launcherサービスによって起動される外部ス
クリプトを処理するプロセスは
SQLRUserGroupメンバアカウントのセキュ
リティコンテキストで動作する。
– このグループとメンバはML Servicesのインストー
ルの過程でインスタンスごとに作成される。
• 既定ではこのメンバに対しSQL Serverへのロ
グインは許可されていないため、外部スクリ
プト内でWindows認証によってログインした
い場合はログイン許可が必要。
プールサイズ変更
• Launcherサービスによって起動される外部ス
クリプトプロセスの同時実行上限はプールサ
イズで決定される。既定値20。
62 © NEC Corporation 2017
詳細:In Database Analytics 設定
CREATE PROCEDURE [dbo].[remote_query_proc]
AS
BEGIN
execute sp_execute_external_script
@language = N'Python'
, @script = N'
import pyodbc
conn = pyodbc.connect(''DRIVER={ODBC Driver 13 for SQL Server};SERVER=.;Trusted_Connection=yes;'')
cursor = conn.cursor()
with cursor.execute("SELECT @@VERSION"):
row = cursor.fetchone()
while row:
print (row[0])
row = cursor.fetchone()
'
SELECT @@VERSION
END
スクリプトはSQLRUserGroupメンバアカウント
のセキュリティコンテキストで動作するため、ス
クリプト内でSQL ServerへWindows認証で接続
する場合はSQLRUserGroupメンバアカウントに
SQL Serverへの権限が必要。
スクリプトの外側は従来通り、ログインしている
ユーザのコンテキストで処理される。
63 © NEC Corporation 2017
詳細:In Database Analytics 設定
▌Launchpad Servicesのサービスアカウントの権限設定
サービスアカウントを既定(NT Service¥MSSQLLaunchpad)から変更する場合は、そ
のアカウントに対して以下の権限設定が必要
• プロセスのメモリ クォータの増加( SeIncreaseQuotaPrivilege )
• 走査チェックのバイパス( SeChangeNotifyPrivilege )
• プロセス レベル トークンの置き換え( SeAssignPrimaryTokenPrivilege )
• サービスとしてログオン( SeServiceLogonRight )
ファイル名を指定して実行
->gpedit.msc
->コンピューターの構成
->Windows の設定
->セキュリティの設定
->ローカル ポリシー
->ユーザー権利の割り当て
64 © NEC Corporation 2017
In Database Analytics 運用
リソースガバナによる外部スクリプト実行のリソース制御
CREATE EXTERNAL RESOURCE POOL
ML Servicesのモニタリング&トラブルシューティング&チューニング
DMV、Perfmon、XEvents、ExtensibilityLog、カスタムレポート、言語側のProfiler
Python/Rパッケージの管理
インストール/アンインストール、ロールによる権限管理、スコープ設定、同期(≒パッケージ移行)
Machine Learning Services のアップデート
SQL Server の パッチ(SP、CU)によってアップデート
65 © NEC Corporation 2017
Demo:Python/Rインストール済みパッケージの確認
66 © NEC Corporation 2017
サンプルコード
Qiita(ID:qio9o9)と GitHUB(ID:gho9o9)で公開
67 © NEC Corporation 2017
サンプル1
▌シナリオ
あるスキーレンタル事業者のレンタルデータ(月日、曜日、祝日、天気、降雪量など)を
もとに将来のレンタル数の予測を行います。
▌ポイント
シンプルなサンプルです。
まずはPythonの開発環境でモデルトレーニング(scikit-learn×線形回帰アルゴリズム)と
スコアリングを実装し、これとまったく同じ処理を SQL Server にデプロイする方法を学
びIn Database Analyticsを実践します。
http://qiita.com/qio9o9/items/9cb8db69b9d61a332b8f
68 © NEC Corporation 2017
サンプル2
▌シナリオ
ニューヨークのタクシー事業者の乗車デ
ータ(時刻、距離、ピックアップ場所な
ど)をもとに特定の乗車においてチップ
が得られるかどうかを予測を行います。
▌ポイント
In Database Analytics の開発ライフサ
イクルを体感するようにチュートリアル
が構成されています。
同じシナリオのサンプルコードを
Python、Rの両言語で用意しています。
scikit-learnとRevoScaleそれぞれでロ
ジスティック回帰モデルをトレーニング
します。
モデルの
デプロイ
モデルの
オペレー
ション
探索と
可視化
特徴抽
出
トレー
ニング
テスト
ETL
http://qiita.com/qio9o9/items/2a521f5ac8afe39e1721
69 © NEC Corporation 2017
サンプル3
▌シナリオ
ローンデータをモデル化し、貸付金利を上昇させた場合の貸倒償却度合の変化について
What-If分析を行います。
▌ポイント
In Database Analyticsの真価を体感できるようにチュートリアルが構成されています。
PowerBIによる可視化を含んだサンプルです。
RevoScaleRでディシジョンフォレストモデルをトレーニングします。
In-memory TableColumn Store Power BI
Predict
(parallel)
VisualizeTrain
R
loan Data
Import
http://qiita.com/qio9o9/items/50f57412737502258a1f
4.おさらい
In-Database Analytics
= SQL Server + Python/R + GPU
71 © NEC Corporation 2017
In-Database Analytics の真価
▌生産性
 データのエクスポート、インポートが不要。
 データの前処理、後処理にSQLが使える。pandasやnumpyでゴリゴリとスクリプトを書く必要はない。
▌機密性
 データが外に出ない。DB内で各種セキュリティ機能(アクセス制御、暗号化、監査など)で利用可能。
 学習モデルの利用(≒外部スクリプトの呼び出し)も容易に権限制御可能。
▌性能性
 データがプロセッサに隣接するため低レイテンシー。
 DBが持つ各種性能機能(カラムストア、インメモリ、データ圧縮、並列処理)が利用可能。
▌可用性
 AlwaysOn AG によってAI実行基盤のクラスタ構成が容易。
▌親和性
 上記をDBAのスキルで実装可能≒信頼性、保守性、連携性、拡張性が高い。
 Python/Rをそのままデプロイでき、アプリへの組込みもSQL文を実行するだけ。
5.さいごに
73 © NEC Corporation 2017
今後の講演予定
▌Microsoft社 × NEC 共催セミナー
 タイトル
• 今準備しよう!実践できるAIをご紹介
~AIで注目されるディープラーニングの事例やデモをご紹介~
 日時
• 2017年10月5日(木) 14:00~16:15
 会場
• NECイノベーションワールド
– 東京都港区港南2-16-1(品川イーストワンタワー7F)
 備考
• 参加費無料
• 定員60名
 詳細 および お申込み
• http://jpn.nec.com/event/171005bdg/index.html
▌Microsoft Tech Summit 2017
 タイトル(仮)
• SQL Server 2017 で実現される AI システムモデルの
ご紹介
 日時
• 2017年11月8日(水)~9日(木)
 会場
• ウェスティンホテル東京
– 東京都目黒区三田1丁目4ー1
 詳細 および お申込み
• https://www.microsoft.com/ja-jp/events/techsummit/2017/
Data Scientists Love SQL Server

More Related Content

What's hot

[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼうdatastaxjp
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかたTomoyuki Oota
 
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...Insight Technology, Inc.
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
 
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...Masahiro Tomisugi
 
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...Funada Yasunobu
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)Shinya Sugiyama
 
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...Insight Technology, Inc.
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告Amazon Web Services Japan
 
Couchbase introduction-20150611
Couchbase introduction-20150611Couchbase introduction-20150611
Couchbase introduction-20150611Couchbase Japan KK
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...Insight Technology, Inc.
 
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...Insight Technology, Inc.
 
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...Insight Technology, Inc.
 
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)Miho Yamamoto
 
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...Insight Technology, Inc.
 
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Masayuki Ozawa
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座Samir Hammoudi
 
Oracle Data Guard basics and how to create manually 18c plus
Oracle Data Guard basics and how to create manually 18c plusOracle Data Guard basics and how to create manually 18c plus
Oracle Data Guard basics and how to create manually 18c plusAkira Kusakabe
 
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシートMasayuki Ozawa
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Suguru Ito
 

What's hot (20)

[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
 
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
性能問題を起こしにくい信頼されるクラウド RDB のつくりかた
 
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...
[db tech showcase Tokyo 2015] C17:MySQL Cluster ユーザー事例紹介~JR東日本情報システム様における導入事例...
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...
[db tech showcase Tokyo 2015] E26 Couchbaseの最新情報/JBoss Data Virtualizationで仮想...
 
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
 
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
 
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
[db tech showcase Tokyo 2017] E26: 窓は開かれた! SQL Server on Linux で拡がる可能性 by 日本マ...
 
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
[よくわかるクラウドデータベース] Amazon RDS for PostgreSQL検証報告
 
Couchbase introduction-20150611
Couchbase introduction-20150611Couchbase introduction-20150611
Couchbase introduction-20150611
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
 
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...
[db tech showcase Tokyo 2017] D35: 何を基準に選定すべきなのか!? ~ビッグデータ×IoT×AI時代のデータベースのアー...
 
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
 
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)
Windows Server 2016 で実現しちゃう HCI (Hyper Converged Infrastructure)
 
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
[db tech showcase Tokyo 2015] A33:Amazon DynamoDB Deep Dive by アマゾン データ サービス ...
 
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
Dal001 sql server 2017 事始め ~ 進化を続ける sql server の最新情報を一挙紹介
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
Oracle Data Guard basics and how to create manually 18c plus
Oracle Data Guard basics and how to create manually 18c plusOracle Data Guard basics and how to create manually 18c plus
Oracle Data Guard basics and how to create manually 18c plus
 
Managed Instance チートシート
Managed Instance チートシートManaged Instance チートシート
Managed Instance チートシート
 
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
Azure Database for MySQL PostgreSQLを使って運用の手間を省きませんか?
 

Similar to Data Scientists Love SQL Server

スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLMicrosoft Azure Japan
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]Hideo Takagi
 
Microsoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update TopicsMicrosoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update TopicsMicrosoft
 
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Atsushi Tsuchiya
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignRyuji TAKEHARA
 
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺めるMicrosoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺めるDaiyu Hatakeyama
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu GotoInsight Technology, Inc.
 
kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?CData Software Japan
 
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきますCDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきますYugo Shimizu
 
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方Chihiro Ito
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformDaiyu Hatakeyama
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識Daiyu Hatakeyama
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へCybozucommunity
 
Data & AI Update 情報 - 2020年4月版
Data & AI Update 情報 - 2020年4月版Data & AI Update 情報 - 2020年4月版
Data & AI Update 情報 - 2020年4月版Takeshi Fukuhara
 
Reckonerサービス紹介資料.pdf
Reckonerサービス紹介資料.pdfReckonerサービス紹介資料.pdf
Reckonerサービス紹介資料.pdfYoshihiroKitamura4
 
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しようMicrosoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しようHideo Takagi
 
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかTetsuo Ajima
 

Similar to Data Scientists Love SQL Server (20)

スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQLスケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
スケーラブルで手間なく動かせる!もうすぐ 一般提供開始 Azure Database for MySQL / PostgreSQL
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
 
Microsoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update TopicsMicrosoft Ignite Fall 2021 Data Platform Update Topics
Microsoft Ignite Fall 2021 Data Platform Update Topics
 
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺めるMicrosoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
Microsoft Ignite 2019 最新アップデート - Azure Big Data Services を俯瞰的に眺める
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
 
kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?kintoneを多様なツールでつなぐには?
kintoneを多様なツールでつなぐには?
 
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきますCDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
 
システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方システムのモダナイズ 落ちても良いアプリの作り方
システムのモダナイズ 落ちても良いアプリの作り方
 
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
【LTセッション】Brainwave 使ってみた_DEEP LEARNING LAB
 
Microsoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI PlatformMicrosoft AI セミナー - Microsoft AI Platform
Microsoft AI セミナー - Microsoft AI Platform
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
クラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へクラウド鎖国からクラウド維新へ
クラウド鎖国からクラウド維新へ
 
Data & AI Update 情報 - 2020年4月版
Data & AI Update 情報 - 2020年4月版Data & AI Update 情報 - 2020年4月版
Data & AI Update 情報 - 2020年4月版
 
Reckonerサービス紹介資料.pdf
Reckonerサービス紹介資料.pdfReckonerサービス紹介資料.pdf
Reckonerサービス紹介資料.pdf
 
IoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL EdgeIoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL Edge
 
データから価値を生み続けるには
データから価値を生み続けるにはデータから価値を生み続けるには
データから価値を生み続けるには
 
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しようMicrosoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
Microsoft Azureのビッグデータ基盤とAIテクノロジーを活用しよう
 
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
 

More from Tomoyuki Oota

SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)Tomoyuki Oota
 
SQL Server コンテナ入門(Docker編)
SQL Server コンテナ入門(Docker編)SQL Server コンテナ入門(Docker編)
SQL Server コンテナ入門(Docker編)Tomoyuki Oota
 
For Power BI Beginners
For Power BI BeginnersFor Power BI Beginners
For Power BI BeginnersTomoyuki Oota
 
SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介Tomoyuki Oota
 
データ分析プラットフォームの歩き方
データ分析プラットフォームの歩き方データ分析プラットフォームの歩き方
データ分析プラットフォームの歩き方Tomoyuki Oota
 
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)Tomoyuki Oota
 

More from Tomoyuki Oota (6)

SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)SQL Server コンテナ入門(Kubernetes編)
SQL Server コンテナ入門(Kubernetes編)
 
SQL Server コンテナ入門(Docker編)
SQL Server コンテナ入門(Docker編)SQL Server コンテナ入門(Docker編)
SQL Server コンテナ入門(Docker編)
 
For Power BI Beginners
For Power BI BeginnersFor Power BI Beginners
For Power BI Beginners
 
SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介SQL Server 2017 で実現される AIシステムモデル のご紹介
SQL Server 2017 で実現される AIシステムモデル のご紹介
 
データ分析プラットフォームの歩き方
データ分析プラットフォームの歩き方データ分析プラットフォームの歩き方
データ分析プラットフォームの歩き方
 
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
 

Data Scientists Love SQL Server

  • 1. 1 © NEC Corporation 2017 Data Scientists Love SQL Server 2017年09月06日 NECソリューションイノベータ株式会社 太田 智行 db tech showcase Tokyo 2017
  • 2.
  • 3. 3 © NEC Corporation 2017 Data Scientists Love SQL Server ▌太田 智行(SQL Server DBA) データベース技術専門部隊にてSW開発か らSIまで様々経験。現在はSQL Server を専門にコンサルタントに従事。 現在、翔泳社 DBOnline にて SQL Server の連載記事を執筆中。 次期 SQL Server すごいですね! Python & GPU で Deep Learning できる そうじゃないですか!! SQL Server すごいですよ! AI分野に毎年 $12 Billion 投資だそうですからね。 本気です!! Data Scientist SQL Server DBA http://enterprisezine.jp/author/524 ▌友永 康之(Data Scientist) AI/Deep Learningの現場運用コンサル ティングで実績多数(5年以上)。 2016年10月に共著した「金融行動に対 する人工知能の実証研究」が日本マーケ ティング学会でベストペーパー賞を受賞 http://www.j-mac.or.jp/prize/
  • 4. 4 © NEC Corporation 2017 ただいま 第三次AIブーム 真っ只中 ▌世の中の動向 キーワード『AI Deep Learning』 過去5年 検索ランク推移 出典:Google Trends (2017年5月30日)
  • 5. 5 © NEC Corporation 2017 ただいま 第三次AIブーム 真っ只中 ▌世の中の動向 キーワード『AI Deep Learning』 過去5年 検索ランク推移 AI時代の寵児『NVIDIA Corp』 過去5年 株価推移 出典:Google Trends (2017年5月30日) 出典:Google Finance (2017年5月30日)
  • 6. 6 © NEC Corporation 2017 ただいま 第三次AIブーム 真っ只中 ▌世の中の動向 ▌日本における国の後押し「AIの社会実装」を推進せよ 平成29年度 タイトル 予算額 文部科学省 人工知能/ビッグデータ/IoT/サイバーセキュリティ統合プロジェクト 71.1億円 総務省 生産性向上につながるIoT・ビッグデータ・AI 等の活用推進 25.8億円 経済産業省 次世代人工知能・ロボット中核技術開発 45.0億円 キーワード『AI Deep Learning』 過去5年 検索ランク推移 AI時代の寵児『NVIDIA Corp』 過去5年 株価推移 出典:Google Finance (2017年5月30日)出典:Google Trends (2017年5月30日)
  • 7. 7 © NEC Corporation 2017 第三次AIをブームで終わらせないためには AIはいまココ お客様ビジネス直結の 本番運用を求められる段階 流行期 幻滅期 回復期 安定期 出典:ガートナー (2016年8月) 黎明期 ① ニューラルネットワーク “学習”がコンピュータで表現可能 ② Bigdata 大量多様”学習”データがホスト可能 ③ GPU(+API) 現実時間内で”学習”処理可能 《 AIブームを支える役者 》
  • 8. 8 © NEC Corporation 2017 第三次AIをブームで終わらせないためには AIはいまココ お客様ビジネス直結の 本番運用を求められる段階 黎明期 流行期 幻滅期 回復期 安定期 出典:ガートナー (2016年8月) 黎明期 ① ニューラルネットワーク “学習”がコンピュータで表現可能 ② Bigdata 大量多様”学習”データがホスト可能 ③ GPU(+API) 現実時間内で”学習”処理可能 《 AIブームを支える役者 》
  • 9. もくじ 1.AI プラットフォーム として なぜ SQL Server が選ばれるのか 2.In Database Analytics の しくみ解説 3.In Database Analytics を さわってみよう
  • 10. 1.AI プラットフォームとして なぜ SQL Serverが選ばれるのか ~ Data Scientists Love SQL Server ~
  • 11. 11 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌個別の特注SI:大がかり かつ 本番運用踏まえた機密性、可用性等の担保も必要 前処理 学習.py 予測.py Job 学習 モデル 後処理 学習 データ 予測 データ ETL AI DB AI ReportDWH/DM 基幹システム API BI Client
  • 12. 12 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌SQL Server にインテリジェンスを ~ In-Database Analytics ~
  • 13. 13 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌その実体は「SQL Server Machine Learning Services」 前処理 学習.py 予測.py Job 学習 モデル 後処理 学習 データ 予測 データ ETL AI DB AI ReportDWH/DM 基幹システム API BI Client SQL Server Machine Learning Services NEW
  • 14. 14 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌っと、いうことは… 前処理 学習.py 予測.py Job 学習 モデル 後処理 学習 データ 予測 データ ETL AI DB AI ReportDWH/DM 基幹システム API BI Client
  • 15. 15 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌こうなるので… 前処理 学習.py 予測.py Job 学習 モデル 後処理 学習 データ 予測 データ ETL AI DB AI Report SQL Server Machine Learning Services NEW DWH/DM SQL Server Agent Service SQL Server Analysis Service SQL Server Integration Service SQL Server Database Service SQL Server Reporting Service 基幹システム API BI Client
  • 16. 16 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか ▌ワンボックスのAI プラットフォーム が出来上がる!! 基幹システム API BI Client Agent Service Machine Learning ServicesAnalysis Service Integration Service Database Service Reporting Service 前処理 学習.py 予測.py 学習モデル 後処理 学習データ 予測データ
  • 17. 17 © NEC Corporation 2017 AI プラットフォームとして なぜ SQL Server が選ばれるのか システム構成部品が少い:信頼性、保守性、連携性が極めて高い。 AIがSQL Serverのリッチな機能に相乗可能:機密性、可用性、性能性を容易に実装でき、Azureへの拡張性も高い。 入口と出口が標準化されたI/Fで接続可能:ユースケースや担当ベンダーごとの個別特注システムは不要&導入が容易。 In-Database Analytics の真価 3 1 2 B社 担当 A社 担当 C社 担当 入口:基幹システム 出口:AIアプリ X社 担当 Y社 担当 Z社 担当 AI:SQL Server t f in Y社 担当 X社 担当 Z社 担当
  • 18. 18 © NEC Corporation 2017 Demo 画像認識AIによる毒キノコ判定
  • 19. 19 © NEC Corporation 2017 Deep Learning デモ ▌Y県自治体の課題 毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。 ▌システムモデル 食用キノコ画像 毒キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API
  • 20. 20 © NEC Corporation 2017 Deep Learning デモ ▌Y県自治体の課題 毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。 ▌システムモデル モデル (AI) 学習 食用キノコ画像 毒キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API
  • 21. 21 © NEC Corporation 2017 Deep Learning デモ ▌Y県自治体の課題 毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。 ▌システムモデル モデル (AI) 学習 食用キノコ画像 毒キノコ画像 評価用キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API スマホ
  • 22. 22 © NEC Corporation 2017 Deep Learning デモ ▌Y県自治体の課題 毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。 ▌システムモデル モデル (AI) 判定 結果 予測 可視化 学習 食用キノコ画像 毒キノコ画像 評価用キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API スマホ
  • 23. 23 © NEC Corporation 2017 Deep Learning デモ ▌Y県自治体の課題 毒キノコの誤食による食中毒の被害があとを絶たない。なんとか減らせないものか…。 ▌登場人物 Data Scientist :AIを開発。 SQL Server DBA:AIをSQL Serverにデプロイ。 Developer :AIをアプリに組込み、結果を可視化。
  • 24. 24 © NEC Corporation 2017 Python Python 学習 予測 デモ① Microsoft Azure Linux GPU SQL Server Data Scientist「私が慣れ親しんだ環境でAIを開発します。」 食用キノコ画像 毒キノコ画像 評価用キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API スマホ Visual Studio Code モデル (AI) 判定 結果 可視化 IDE
  • 25. 25 © NEC Corporation 2017 Python Python 学習 予測 Microsoft Azure Linux GPU SQL Server 食用キノコ画像 毒キノコ画像 評価用キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API スマホ Visual Studio Code モデル (AI) 判定 結果 IDE DBA「AIを『コピペ』のプロシージャ化 で SQL Server にデプロイします」 デモ② 学習 予測 ストアド プロシージャ ストアド プロシージャ
  • 26. 26 © NEC Corporation 2017 Python Python 学習 予測 Microsoft Azure Linux GPU SQL Server 食用キノコ画像 毒キノコ画像 評価用キノコ画像 Microsoft Cognitive Services ETL Bing Image Search API スマホ Visual Studio Code モデル (AI) 判定 結果 IDE 学習 予測 ストアド プロシージャ ストアド プロシージャ デモ③ Developer「SQL文1行でAIを実行し、結果を可視化します」 可視化
  • 27. 2. In Database Analytics の しくみ解説 注)SQL Server 2017 RC2 時点の情報です
  • 28. 28 © NEC Corporation 2017 CREATE PROCEDURE ユーザ定義プロシージャ AS BEGIN EXEC sp_execute_external_script @language = N'Python', @script =N'#Python code#' END オペレーションモデル SQL Server 2017 Machine Learning Services Python Runtime APP 結果返却 Python/Rコード実行 T-SQL Java C/C++ C#/VB.NET PHP Node.js Python Ruby ② ③ ① EXEC ユーザ定義プロシージャ sp_execute _external _script の呼び出し EXEC sp_execute_external_script @language = N'Python', @script =N'#Python code#' もしくは Server
  • 29. 29 © NEC Corporation 2017 sp_execute_external_script CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS BEGIN execute sp_execute_external_script @language = N'Python', @script = N' print(''Hello '' + InputParam) MyOutput = MyInput OutputParam = len(MyOutput) print(OutputParam)', @input_data_1 = N'SELECT 1, 2, 3;', @input_data_1_name = N'MyInput', @output_data_1_name = N'MyOutput', @params = N'@InputParam varchar(10), @OutputParam int OUTPUT', @InputParam = @input, @OutputParam = @output OUTPUT WITH RESULT SETS (( C1 int, C2 int, C3 int )); END 利用するスクリプト言語 ‘Python’ もしくは ‘R’ を指定。
  • 30. 30 © NEC Corporation 2017 sp_execute_external_script CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS BEGIN execute sp_execute_external_script @language = N'Python', @script = N' print(''Hello '' + InputParam) MyOutput = MyInput OutputParam = len(MyOutput) print(OutputParam)', @input_data_1 = N'SELECT 1, 2, 3;', @input_data_1_name = N'MyInput', @output_data_1_name = N'MyOutput', @params = N'@InputParam varchar(10), @OutputParam int OUTPUT', @InputParam = @input, @OutputParam = @output OUTPUT WITH RESULT SETS (( C1 int, C2 int, C3 int )); END スクリプトを記述。 ※.スクリプトファイルを指定することも可能。 R:source(script.R) Python v2:execfile(script.py) Python v3:exec(open('a_filename').read())
  • 31. 31 © NEC Corporation 2017 sp_execute_external_script CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS BEGIN execute sp_execute_external_script @language = N'Python', @script = N' print(''Hello '' + InputParam) MyOutput = MyInput OutputParam = len(MyOutput) print(OutputParam)', @input_data_1 = N'SELECT 1, 2, 3;', @input_data_1_name = N'MyInput', @output_data_1_name = N'MyOutput', @params = N'@InputParam varchar(10), @OutputParam int OUTPUT', @InputParam = @input, @OutputParam = @output OUTPUT WITH RESULT SETS (( C1 int, C2 int, C3 int )); END スクリプトに渡すデータセットの 定義(任意) 。 ※.現時点ではSELECTクエリで定義が必要。 EXEC proc はNG。 ※.RではDataFrame、PythonではPandas DataFrameとして渡される。 スクリプトに渡すデータセットの 変数名(任意)。 ※.既定値はInputDataSet
  • 32. 32 © NEC Corporation 2017 sp_execute_external_script CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS BEGIN execute sp_execute_external_script @language = N'Python', @script = N' print(''Hello '' + InputParam) MyOutput = MyInput OutputParam = len(MyOutput) print(OutputParam)', @input_data_1 = N'SELECT 1, 2, 3;', @input_data_1_name = N'MyInput', @output_data_1_name = N'MyOutput', @params = N'@InputParam int, @OutputParam int OUTPUT', @InputParam = @input, @OutputParam = @output OUTPUT WITH RESULT SETS (( C1 int, C2 int, C3 int )); END スクリプトから返されるデータ セットの変数名の定義(任意) ※.既定値はOutputDataSet データセットの列バインド の定義(任意)
  • 33. 33 © NEC Corporation 2017 sp_execute_external_script CREATE PROCEDURE MyProc(@input varchar(10), @output int OUTPUT) AS BEGIN execute sp_execute_external_script @language = N'Python', @script = N' print(''Hello '' + InputParam) MyOutput = MyInput OutputParam = len(MyOutput) print(OutputParam)', @input_data_1 = N'SELECT 1, 2, 3;', @input_data_1_name = N'MyInput', @output_data_1_name = N'MyOutput', @params = N'@InputParam varchar(10), @OutputParam int OUTPUT', @InputParam = @input, @OutputParam = @output OUTPUT WITH RESULT SETS (( C1 int, C2 int, C3 int )); END スクリプトに渡すパラメータとスク リプトから返るパラメータの定義 (任意) 。
  • 34. 34 © NEC Corporation 2017 sp_execute_external_script DECLARE @NumOfRec int EXEC MyProc @input='Python!', @output=@NumOfRec OUTPUT SELECT @NumOfRec as NumOfRec Go
  • 35. 35 © NEC Corporation 2017 Sample 1:irisデータセットを出力データセットとして返す EXEC sp_execute_external_script @language = N'Python', @script = N' from sklearn.datasets import load_iris import pandas as pd iris = load_iris() iris_data = pd.DataFrame(iris.data, columns=iris.feature_names)', @output_data_1_name = N'iris_data' WITH RESULT SETS (( "SepalLength" float not null, "SepalWidth" float not null, "PetalLength" float not null, “PetalWidth” float not null )); EXEC sp_execute_external_script @language = N'R', @script = N' iris_data <- iris[, c(1:4)];', @output_data_1_name = N'iris_data' WITH RESULT SETS (( "SepalLength" float not null, "SepalWidth" float not null, "PetalLength" float not null, “PetalWidth” float not null ));
  • 36. 36 © NEC Corporation 2017 Sample 2:クエリ結果を入力データセットとして渡す CREATE PROCEDURE [dbo].[load_iris_py_2](@cond_length int, @cond_width int, @num_of_rec int OUTPUT) AS BEGIN EXEC sp_execute_external_script @language = N'Python', @script = N' df = iris_data_in iris_data_out = df[ (df[''SepalLength''] > length ) & (df[''SepalWidth''] > width ) ] count = len(iris_data_out)', @input_data_1 = N'SELECT * FROM iris_py', @input_data_1_name = N'iris_data_in', @output_data_1_name = N'iris_data_out', @params = N'@length int, @width int, @count int OUTPUT', @length = @cond_length, @width = @cond_width, @count = @num_of_rec OUTPUT WITH RESULT SETS (("SepalLength" float not null, "SepalWidth" float not null, "PetalLength" float not null, "PetalWidth" float not null)); END GO DECLARE @NumOfRec int EXEC load_iris_py_2 @cond_length=7, @cond_width=3, @num_of_rec=@NumOfRec OUTPUT SELECT @NumOfRec as NumOfRec Go
  • 37. 37 © NEC Corporation 2017 In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll BxlServer.exe SqlSatellite.dll Database Engine Services Launchpad Services Machine Learning Services Python/R Process BxlServer Process Named Pipe ① ② ③ ④ Named Pipe ⑤⑥ TCP/IP conhost.exe APP Server sp_execute _external _script
  • 38. 38 © NEC Corporation 2017 In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Database Engine Services Launchpad Services APP Server sp_execute _external _script インスタンスごとに 起動する常駐プロセス インスタンスごとに 起動する常駐プロセス
  • 39. 39 © NEC Corporation 2017 In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Database Engine Services Launchpad Services Named Pipe ① ② APP Server ① ・SQL ServerはLaunchpadサービスに クエリを送信する ・InputDataSetクエリが指定されてい る場合はそれを実行する ② ・Launchpadは@language(e.g. Python)で示された言語用の Launcher(e.g. Pythonlauncher) を選択する。 ※ セキュリティのため、選択できるコンポーネントは Microsoftによる発行もしくは認定されたものに限定され ている。
  • 40. 40 © NEC Corporation 2017 ① ② In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll Database Engine Services Launchpad Services Machine Learning Services Python/R Process Named Pipe ③ conhost.exe APP Server③ ・Launcherはプールからワーカーアカウン トを取得し、そのワーカのセキュリティコ ンテキストで言語ランタイム(e.g. Python.exe)を起動する。 ※ ワーカアカウントは既定で20個あり、これらのアカウントはすべて ローカルWindowsグループ「SQLRUserGroup」に所属する。 ※ Pythonスクリプトが並列プロセスを使用する場合、それらは同じ単 一のワーカーのコンテキストで起動される。 ※ 言語ランタイムはコンソールアプリであるため伴ってconhost.exe も起動される。 Pythonlauncher.dll /Rlauncher.dll
  • 41. 41 © NEC Corporation 2017 sp_execute _external _script Sqlsrvr.exe Database Engine Services In-Database Analytics Architecture Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Launchpad Services Named Pipe ① ② ③ APP Server Machine Learning Services BxlServer.exe SqlSatellite.dll BxlServer Process Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll Python/R Process conhost.exe ④ Named Pipe ④ ・言語ランタイムはBxlServerを起動する。 ・BxlServerは言語ランタイムと連携して データの交換や作業結果の格納を管理する。
  • 42. 42 © NEC Corporation 2017 In-Database Analytics Architecture Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Launchpad Services Named Pipe ① ② ③ APP Server sp_execute _external _script Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll Python/R Process conhost.exe ④ Named Pipe Machine Learning Services BxlServer.exe SqlSatellite.dll BxlServer Process ⑤ TCP/IP Sqlsrvr.exe Database Engine Services ⑤ BxlServerはSQL Satellite(拡張性API)を使用し 以下のタスクを実行する。 ・入力データのRead、入力引数のGet ・出力データのWrite、出力引数をSet ・エラー処理 ・STDOUTとSTDERRをクライアントに書き戻す
  • 43. 43 © NEC Corporation 2017 ⑤ In-Database Analytics Architecture Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Launchpad Services Named Pipe ① ② ③ APP Server sp_execute _external _script Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll Python/R Process conhost.exe ④ Named Pipe Machine Learning Services BxlServer.exe SqlSatellite.dll BxlServer Process TCP/IP Sqlsrvr.exe Database Engine Services ⑥ ⑥ SQL Serverは結果を取得し、関連 するタスクとプロセス(言語ランタ イム、BxlServer)を終了
  • 44. 44 © NEC Corporation 2017 In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Database Engine Services Launchpad Services APP Server 結果返却
  • 45. 45 © NEC Corporation 2017 In-Database Analytics Architecture Sqlsrvr.exe Launchpad.exe Pythonlauncher.dll /Rlauncher.dll Python.exe /RTerm.exe Python35.dll /R.dll PyLink.dll /RxLink.dll BxlServer.exe SqlSatellite.dll Database Engine Services Launchpad Services Machine Learning Services Python/R Process BxlServer Process Named Pipe ① ② ③ ④ Named Pipe ⑤⑥ TCP/IP conhost.exe APP Server sp_execute _external _script
  • 46. 46 © NEC Corporation 2017 In-Database Analytics の真価 ▌生産性  データのエクスポート、インポートが不要。  データの前処理、後処理にSQLが使える。pandasやnumpyでゴリゴリとスクリプトを書く必要はない。 ▌機密性  データが外に出ない。DB内で各種セキュリティ機能(アクセス制御、暗号化、監査など)で利用可能。  学習モデルの利用(≒外部スクリプトの呼び出し)も容易に権限制御可能。 ▌性能性  データがプロセッサに隣接するため低レイテンシー。  DBが持つ各種性能機能(カラムストア、インメモリ、データ圧縮、並列処理)が利用可能。 ▌可用性  AlwaysOn AG によってAI実行基盤のクラスタ構成が容易。 ▌親和性  上記をDBAのスキルで実装可能≒信頼性、保守性、連携性、拡張性が高い。  Python/Rをそのままデプロイでき、アプリへの組込みもSQL文を実行するだけ。
  • 47. 47 © NEC Corporation 2017 機密:外部スクリプトロジックの隠蔽(=プロシージャ定義へのアクセス制御) ▌定義の参照はオブジェクトの所有者、または ALTER, CONTROL、TAKE OWNERSHIP、VIEW DEFINITION のいずれかの権限を許可されたユーザのみ GRANT VIEW DEFINITION TO ユーザ
  • 48. 48 © NEC Corporation 2017 機密:外部スクリプトロジックの隠蔽(=プロシージャ定義へのアクセス制御) ▌CREATE PROCEDURE <name> WITH ENCRYPTION によって難読化が可能
  • 49. 49 © NEC Corporation 2017 機密:外部スクリプトロジックの利用制限(=プロシージャ実行権限制御) ▌プロシージャ実行はオブジェクト所有者 または EXEC権限が必要 GRANT EXEC ON grant_exec_proc_demo TOユーザ
  • 50. 50 © NEC Corporation 2017 性能:カラムストアインデックスによるETL処理の高速化 CREATE CLUSTERED COLUMNSTORE INDEX ColumnstoreIndex ON Table_with_5M_rows CREATE PROCEDURE columnstore_demo AS BEGIN EXEC sp_execute_external_script @language = N'Python' , @script = N' import pyodbc from datetime import datetime cnxn = pyodbc.connect(''DRIVER={ODBC Driver 13 for SQL Server};SERVER=.;DATABASE=MLDEMODB;Trusted_Connection=yes ;'') cursor = cnxn.cursor() tsql = "SELECT SUM(Price) as sum FROM Table_with_5M_rows" a = datetime.now() with cursor.execute(tsql): b = datetime.now() c = b - a for row in cursor: print (''Sum:'', str(row[0])) print (''QueryTime:'', c.microseconds, ''µs'') ' END GO 156239 µs 0 µs
  • 51. 3. In Database Analytics を さわってみよう
  • 52. 52 © NEC Corporation 2017 そのまえに: Standard Edition でも使えるの? ▌Machine Learning Services は Standard Edition でも使えます! Enterprise Edition 比較で機能差は無し。 • (抜粋) Standard Edition has all the capabilities of in-database analytics included with Enterprise Edition, except for resource governance. Performance and scale is also limited: the data that can be processed must fit in server memory, and processing is limited to a single compute thread, even when using the RevoScaleR functions. スレッド数やリソースのスケーラビリティに制約有り。
  • 53. 53 © NEC Corporation 2017 そのまえに:ML Services 制限事項(SQL17RC2時点) ▌プラットフォームは SQL Server on Windows のみ SQL Server on Linux は今時点未サポート Azure SQL Database や Azure SQL Data Warehouse では未サポート ▌Python言語は SQL Server 2017 でサポート R言語は SQL Server 2016 でサポート ▌AlwaysOn による可用性構成は Availability Group のみサポート Failover Cluster Instance は未サポート
  • 54. 54 © NEC Corporation 2017 In Database Analytics セットアップ 1.SQL Server Database Engine Services と SQL Server Machine Learning Services のインストール 2.外部スクリプト実行機能の有効化 (EXEC sp_configure 'external scripts enabled', 1;) 3.SQL Server の再起動
  • 55. 55 © NEC Corporation 2017 In Database Analytics セットアップ SQL Server 2016 の R Services が改名してMachine Learning Services となっている
  • 56. 56 © NEC Corporation 2017 In Database Analytics セットアップ ▌Machine Learning Services Python/RをSQL Serverに統合した In Database な実行環境を提供 • RC2時点でWindowsのみ ▌Machine Learning Server スケーラブルなPython/Rの実行環境を 提供 • SQL Serverとは直接かかわりがない – Windows版はSQL Serverのライセンスによっ て提供される • Windows/Linuxに対応 こっち(Machine Learning Server) は別物
  • 57. 57 © NEC Corporation 2017 補足:Python/R バージョン(SQL Server 2017 RC2時点) ▌Python:version 3.5.2 Anaconda 4.3 がインストールされる • Continuum Analytics社が提供するPythonディストリビューション Python HOME • C:¥Program Files¥Microsoft SQL Server¥MSSQL14.MSSQLSERVER¥PYTHON_SERVICES ▌R:version 3.3.3 Microrosft R がインストールされる • Revolution Analytics社(2015年Microsoft社が買収)が提供するRディストリビューション R HOME • C:¥Program Files¥Microsoft SQL Server¥MSSQL14.MSSQLSERVER¥R_SERVICES
  • 58. 58 © NEC Corporation 2017 Demo:Python バージョン確認(SQL Server 2017 RC2時点)
  • 59. 59 © NEC Corporation 2017 Demo:R バージョン確認(SQL Server 2017 RC2時点)
  • 60. 60 © NEC Corporation 2017 In Database Analytics 設定 ログインユーザへの外部スクリプト実行権限の付与 GRANT EXECUTE ANY EXTERNAL SCRIPT TO [ユーザ名] 外部スクリプトワーカの実行ユーザへのログイン許可 CREATE LOGIN [マシン名¥SQLRUserGroup] FROM WINDOWS 外部スクリプトワーカプールサイズの変更(既定値は20) Configuration Manager->Launchpadサービス->詳細設定->外部ユーザの数を変更 Launchpad Servicesのサービスアカウントの権限設定 SeIncreaseQuotaPrivilege、SeChangeNotifyPrivilege、SeAssignPrimaryTokenPrivilege、SeServiceLogonRight が必要
  • 61. 61 © NEC Corporation 2017 詳細:In Database Analytics 設定 ▌外部スクリプトワーカ ログイン許可 • Launcherサービスによって起動される外部ス クリプトを処理するプロセスは SQLRUserGroupメンバアカウントのセキュ リティコンテキストで動作する。 – このグループとメンバはML Servicesのインストー ルの過程でインスタンスごとに作成される。 • 既定ではこのメンバに対しSQL Serverへのロ グインは許可されていないため、外部スクリ プト内でWindows認証によってログインした い場合はログイン許可が必要。 プールサイズ変更 • Launcherサービスによって起動される外部ス クリプトプロセスの同時実行上限はプールサ イズで決定される。既定値20。
  • 62. 62 © NEC Corporation 2017 詳細:In Database Analytics 設定 CREATE PROCEDURE [dbo].[remote_query_proc] AS BEGIN execute sp_execute_external_script @language = N'Python' , @script = N' import pyodbc conn = pyodbc.connect(''DRIVER={ODBC Driver 13 for SQL Server};SERVER=.;Trusted_Connection=yes;'') cursor = conn.cursor() with cursor.execute("SELECT @@VERSION"): row = cursor.fetchone() while row: print (row[0]) row = cursor.fetchone() ' SELECT @@VERSION END スクリプトはSQLRUserGroupメンバアカウント のセキュリティコンテキストで動作するため、ス クリプト内でSQL ServerへWindows認証で接続 する場合はSQLRUserGroupメンバアカウントに SQL Serverへの権限が必要。 スクリプトの外側は従来通り、ログインしている ユーザのコンテキストで処理される。
  • 63. 63 © NEC Corporation 2017 詳細:In Database Analytics 設定 ▌Launchpad Servicesのサービスアカウントの権限設定 サービスアカウントを既定(NT Service¥MSSQLLaunchpad)から変更する場合は、そ のアカウントに対して以下の権限設定が必要 • プロセスのメモリ クォータの増加( SeIncreaseQuotaPrivilege ) • 走査チェックのバイパス( SeChangeNotifyPrivilege ) • プロセス レベル トークンの置き換え( SeAssignPrimaryTokenPrivilege ) • サービスとしてログオン( SeServiceLogonRight ) ファイル名を指定して実行 ->gpedit.msc ->コンピューターの構成 ->Windows の設定 ->セキュリティの設定 ->ローカル ポリシー ->ユーザー権利の割り当て
  • 64. 64 © NEC Corporation 2017 In Database Analytics 運用 リソースガバナによる外部スクリプト実行のリソース制御 CREATE EXTERNAL RESOURCE POOL ML Servicesのモニタリング&トラブルシューティング&チューニング DMV、Perfmon、XEvents、ExtensibilityLog、カスタムレポート、言語側のProfiler Python/Rパッケージの管理 インストール/アンインストール、ロールによる権限管理、スコープ設定、同期(≒パッケージ移行) Machine Learning Services のアップデート SQL Server の パッチ(SP、CU)によってアップデート
  • 65. 65 © NEC Corporation 2017 Demo:Python/Rインストール済みパッケージの確認
  • 66. 66 © NEC Corporation 2017 サンプルコード Qiita(ID:qio9o9)と GitHUB(ID:gho9o9)で公開
  • 67. 67 © NEC Corporation 2017 サンプル1 ▌シナリオ あるスキーレンタル事業者のレンタルデータ(月日、曜日、祝日、天気、降雪量など)を もとに将来のレンタル数の予測を行います。 ▌ポイント シンプルなサンプルです。 まずはPythonの開発環境でモデルトレーニング(scikit-learn×線形回帰アルゴリズム)と スコアリングを実装し、これとまったく同じ処理を SQL Server にデプロイする方法を学 びIn Database Analyticsを実践します。 http://qiita.com/qio9o9/items/9cb8db69b9d61a332b8f
  • 68. 68 © NEC Corporation 2017 サンプル2 ▌シナリオ ニューヨークのタクシー事業者の乗車デ ータ(時刻、距離、ピックアップ場所な ど)をもとに特定の乗車においてチップ が得られるかどうかを予測を行います。 ▌ポイント In Database Analytics の開発ライフサ イクルを体感するようにチュートリアル が構成されています。 同じシナリオのサンプルコードを Python、Rの両言語で用意しています。 scikit-learnとRevoScaleそれぞれでロ ジスティック回帰モデルをトレーニング します。 モデルの デプロイ モデルの オペレー ション 探索と 可視化 特徴抽 出 トレー ニング テスト ETL http://qiita.com/qio9o9/items/2a521f5ac8afe39e1721
  • 69. 69 © NEC Corporation 2017 サンプル3 ▌シナリオ ローンデータをモデル化し、貸付金利を上昇させた場合の貸倒償却度合の変化について What-If分析を行います。 ▌ポイント In Database Analyticsの真価を体感できるようにチュートリアルが構成されています。 PowerBIによる可視化を含んだサンプルです。 RevoScaleRでディシジョンフォレストモデルをトレーニングします。 In-memory TableColumn Store Power BI Predict (parallel) VisualizeTrain R loan Data Import http://qiita.com/qio9o9/items/50f57412737502258a1f
  • 71. 71 © NEC Corporation 2017 In-Database Analytics の真価 ▌生産性  データのエクスポート、インポートが不要。  データの前処理、後処理にSQLが使える。pandasやnumpyでゴリゴリとスクリプトを書く必要はない。 ▌機密性  データが外に出ない。DB内で各種セキュリティ機能(アクセス制御、暗号化、監査など)で利用可能。  学習モデルの利用(≒外部スクリプトの呼び出し)も容易に権限制御可能。 ▌性能性  データがプロセッサに隣接するため低レイテンシー。  DBが持つ各種性能機能(カラムストア、インメモリ、データ圧縮、並列処理)が利用可能。 ▌可用性  AlwaysOn AG によってAI実行基盤のクラスタ構成が容易。 ▌親和性  上記をDBAのスキルで実装可能≒信頼性、保守性、連携性、拡張性が高い。  Python/Rをそのままデプロイでき、アプリへの組込みもSQL文を実行するだけ。
  • 73. 73 © NEC Corporation 2017 今後の講演予定 ▌Microsoft社 × NEC 共催セミナー  タイトル • 今準備しよう!実践できるAIをご紹介 ~AIで注目されるディープラーニングの事例やデモをご紹介~  日時 • 2017年10月5日(木) 14:00~16:15  会場 • NECイノベーションワールド – 東京都港区港南2-16-1(品川イーストワンタワー7F)  備考 • 参加費無料 • 定員60名  詳細 および お申込み • http://jpn.nec.com/event/171005bdg/index.html ▌Microsoft Tech Summit 2017  タイトル(仮) • SQL Server 2017 で実現される AI システムモデルの ご紹介  日時 • 2017年11月8日(水)~9日(木)  会場 • ウェスティンホテル東京 – 東京都目黒区三田1丁目4ー1  詳細 および お申込み • https://www.microsoft.com/ja-jp/events/techsummit/2017/