SlideShare une entreprise Scribd logo
1  sur  62
Télécharger pour lire hors ligne
Juliaで並列計算 
2014年9月27日 
第2回JuliaTokyo 
@sfchaos
自己紹介 
TwitterID:@sfchaos 
お仕事:データマイニング, セマンティックWeb, 
オントロジー, etc. 
使用言語:R/C++/Perl/Python/etc. 
1
アジェンダ 
1.並列計算とJulia 
2.並列化できる処理の例 
3.Juliaでの並列計算の流れ 
4.並列計算文法編 
5.並列計算実践編 
6.まとめ 
2
1. 並列計算とJulia 
3
並列計算とは 
最近は、一般的なパソコンでも複数のコアを搭載すること が当たり前になってきた。 
並列計算= 計算機、CPU、コアなどの計算リソースを 有効に活用して、並列的に処理を同時に実行すること 
4 
タスク1 
タスク2 
タスク3 
タスク4 
タスク1 
タスク2 
タスク3 
タスク4 
並列計算のイメージ
JuliaPowered by Parallel Computing 
Juliaの特徴の一つに、 標準で並列計算をサポートしている点がある。 
5 
Designedforparallelismanddistributed computation
JuliaPowered by Parallel Computing 
速いといわれるJuliaで並列計算すれば、最強?? 
6 
Powered By Parallel Computing 
gc問題が残っている・・・?
2. 並列化できる処理の例 
7
k平均法 
結果が初期値に依存するので、複数回の試行が望ましい。 
複数回の試行は互いに独立しており、並列化可能。 
8 
①各データにランダムに割り当 てたクラスターのラベルを用いて、 
各クラスターのデータの中心を 
クラスターの中心とする。 
②各データから最も近いクラスター中心 のクラスターを新たなラベルとする。 
③各クラスターの 
データの中心を 
新たなクラスター中心とする。 
クラスター1 
クラスター3 
クラスター 
中心 
クラスター2 
クラスター1 
クラスター3 
クラスター2 
クラスター中心が収束するまで繰り返す
ブートストラップ法 
ブートストラップ標本の作成や統計量計算は並列化可能。 
9
ランダムフォレスト 
クラス分類・回帰を実行する機械学習の代表的な手法。 
訓練データに対してサンプルのブートストラップと説明変数 のサンプリングを行って複数の決定木を構築。 
テストデータに対して、各決定木の予測結果の多数決によ り予測を実行。 
10
その他の並列化可能な処理 
モンテカルロシミュレーション 
ハイパーパラメータ探索・クロスバリデーション (機械学習の予測モデル構築・評価) 
etc. 
11
3. Juliaでの並列計算の流れ 
12
Juliaの並列計算のコンセプト 
Juliaの並列計算は、メッセージパッシングで実装。 
※通信方式はTCP/IPのソケット?(base/multi.jl参照) 
通常のメッセージパッシングは、 プロセス間でデータや命令などを相互にやりとりする。 
13 
プロセス1 
プロセス2 
プロセス3 
プロセス4 
通常のメッセージパッシング 
データ、命令を 
プロセス間でやり取り
Juliaの並列計算のコンセプト 
Juliaのメッセージパッシングの実装は、 あるプロセスから他のプロセスへの一方通行。 
14 
マスタープロセス 
ワーカープロセス 
データ転送、処理の命令 
あるプロセスから 
他プロセスへの 
一方通行
Juliaの並列計算のコンセプト 
そのため、ユーザは片方のプロセスだけ管理すればO.K. 
15 
マスタープロセス 
ワーカープロセス 
データ転送、処理の命令 
あるプロセスから 
他プロセスへの 
一方通行 
ユーザは片方のプロセスを 
管理すればO.K.
Juliaにおける並列計算の流れ 
16 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの生成 
Step.1 
ワーカープロセスの 
生成
Juliaにおける並列計算の流れ 
17 
マスタープロセス 
ワーカープロセス 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令
Juliaにおける並列計算の流れ 
18 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.3 
ワーカープロセスでの 
処理の実行
Juliaにおける並列計算の流れ 
19 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照 
処理 結果 
処理 結果 
処理 結果 
処理 結果 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照 
参照
Juliaにおける並列計算の流れ 
20 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照
Juliaにおける並列計算の流れ 
21 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照 
Step.3は、ワーカープロセスが 
マスタープロセスと独立して実行
Juliaにおける並列計算の流れ 
22 
マスタープロセス 
ワーカープロセス 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照 
以下では、 
Step.1, 2, 4について説明
Step.1 ワーカープロセスの生成 
ワーカープロセスを生成するタイミングは、 
①マスタープロセスの起動時 
②マスタープロセスの起動後 
23 
マスタープロセス 
Step.1 
ワーカープロセスの生成
Step.1 ワーカープロセスの生成 
マスタープロセスの起動時における生成 
24 
$ julia –p 4 
julia> # ワーカープロセス数の確認 
julia> nworkers() 
4 
julia> # マスターとワーカーの合計プロセス数の確認 
julia> nprocs() 
5 
起動時にpオプションにワーカープロセス数を指定 
ワーカープロセス数の確認
Step.1 ワーカープロセスの生成 
マスタープロセスの起動後における生成 
25 
julia> nprocs() 
1 
julia> nworkers() 
1 
julia> # 4つのワーカープロセスの生成 
julia> addprocs(4) 
4-element Array{Any,1}: 
2 
3 
4 
5 
julia> nprocs() 
5 
julia> nworkers() 
4 
addprocs関数で生成するワーカープロセスの個数を指定
Step.2 ワーカープロセスへの データ転送・処理の命令 
処理の命令(リモートコール) 
26 
remotecall(nproc, function, args) 
あるプロセッサから他のプロセッサに引数を渡して関数を実行させ るための呼び出し。 
返り値はリモートリファレンス(remote reference)というもの。
Step.2 ワーカープロセスへの データ転送・処理の命令 
処理の命令(リモートコール) 
27 
$ julia -p 2 
julia> # 乱数種の設定 
julia> srand(123) 
julia> r = remotecall(2, rand, 2, 2) 
RemoteRef(2,1,4) 
実行例)ワーカープロセス2で、2×2の一様乱数の行列を生成 
remotecall(nproc, function, args) 
あるプロセッサから他のプロセッサに引数を渡して関数を実行させ るための呼び出し。 
返り値はリモートリファレンス(remote reference)というもの。
Step.2 ワーカープロセスへの データ転送・処理の命令 
データの転送 
28 
julia> A = rand(1000,1000) 
julia> Bref= @spawn A^2 
... 
julia> fetch(Bref) 
julia> Bref= @spawn rand(1000,1000)^2 
... 
julia> fetch(Bref) 
マスタープロセスでデータを生成し、ワーカープロセスにデータを転送 
ワーカープロセスでデータを生成 
通信 
オーバーヘッド 
大 
小 
データ転送するしないは、 
ケースバイケース
Step.4 マスタープロセスから ワーカープロセスの処理結果の参照 
リモートリファレンスからの値の取得 
29 
fetch(expr)
Step.4 マスタープロセスから ワーカープロセスの処理結果の参照 
リモートリファレンスからの値の取得 
30 
$ julia -p 2 
julia> # 乱数種の設定 
julia> srand(123) 
julia> r = remotecall(2, rand, 2, 2) 
RemoteRef(2,1,4) 
julia> fetch(r) 
2x2 Array{Float64,2}: 
0.353081 0.369369 
0.235385 0.183653 
実行例)ワーカープロセス2で作成した行列の値を取得 
fetch(expr)
ここまでのまとめ Juliaにおける並列計算の流れ 
31 
$ julia –p 4 
$ julia -p 2 
julia> # 乱数種の設定 
julia> srand(123) 
julia> r = remotecall(2, rand, 2, 2) 
RemoteRef(2,1,4) 
julia> fetch(r) 
2x2 Array{Float64,2}: 
0.353081 0.369369 
0.235385 0.183653 
マスタープロセス起動時 
julia>addprocs(4) 
マスタープロセス起動後 
Step.1 
ワーカープロセスの 
生成 
Step.2 
ワーカープロセスへの 
データ転送・処理の命令 
Step.3 
ワーカープロセスでの 
処理の実行 
Step.4 
マスタープロセスから 
ワーカープロセスの 
処理結果の参照
4. Juliaで並列計算文法編 
32
@spawnatマクロ 
評価する式とワーカープロセスを指定して実行 
33 
@spawnat(p, expr) 
第2引数で指定した式を第1引数で指定したワーカープロセスで実行
@spawnatマクロ (remotecallの代替) 
評価する式とワーカープロセスを指定して実行 
34 
julia> s = @spawnat2 1 + fetch(r) RemoteRef(2,1,6) 
julia> fetch(s) 
2x2Array{Float64,2}: 
1.34133 1.0674 
1.76699 1.06808 
実行例)ワーカープロセス2で1+fetch(r)を計算 
@spawnat(p, expr) 
第2引数で指定した式を第1引数で指定したワーカープロセスで実行
@spawnマクロ 
引数で指定した式をいずれかのワーカープロセスで評価 
35 
@spawn(expr)
@spawnマクロ 
引数で指定した式をいずれかのワーカープロセスで評価 
36 
julia> r = @spawn rand(2,2) RemoteRef(3,1,10) 
julia> s = @spawn 1 .+ fetch(r) RemoteRef(3,1,11) 
julia> fetch(s) 
2x2 Array{Float64,2}: 
1.03 1.16674 
1.99027 1.89547 
実行例)いずれかのワーカープロセスで生成した乱数に1を足して 
フェッチする 
@spawn(expr)
ワーカープロセスでの 変数・関数の評価 
マスタープロセスで定義した関数は、 そのままではワーカープロセスで認識できない。 
37 
julia>function rand2(dims...) 
return 2*rand(dims...) 
end rand2 
(generic function with 1 method) 
julia> rand2(2,2) 
2x2 Array{Float64,2}: 
1.5369 1.34792 
1.88103 0.790906 
julia> @spawn rand2(2,2) 
RemoteRef(2,1,13) 
julia> exception on 2: ERROR: function rand2 not defined on process 2 in error at error.jl:21 in anonymous at serialize.jl:397 in anonymous at multi.jl:1279 in anonymous at multi.jl:848 in run_work_thunkat multi.jl:621 in run_work_thunkat multi.jl:630 in anonymous at task.jl:6
ワーカープロセスでの 変数・関数の評価 
すべてのワーカープロセスで変数や関数を認識させるために @everywhereマクロを前につける。 
38 
julia> @everywhere function rand2(dims...) 
2 * rand(dims...) 
end 
julia> @spawn rand2(2,2) 
RemoteRef(2,1,20) 
julia> fetch(r) 
2x2 Array{Float64,2}: 
1.92811 0.535094 
1.40141 0.0465075
ワーカープロセスでの 変数・関数の評価 
同様に、ソースコードやパッケージをすべてのワーカープロセ スに認識させるために、include関数やusing関数の前に @everywhereを付加する。 
39 
julia> @everywhere include("defs.jl") 
julia> @everywhere using Clustering 
ソースコードについては、require関数でもO.K. 
julia> require("defs.jl")
ワーカープロセスでの 変数・関数の評価 
Julia起動時に、すべてのワーカープロセスにJuliaのソース コードの記述内容を認識させるためには、-Lオプションでファ イル名を指定する。 
40 
$ julia-p <n> -L file1.jl -L file2.jl driver.jl
並列処理とループ計算 
プロセス間でデータの転送が不要な場合は、 以下の2つの方法により並列計算の簡潔な記述が可能。 
①@parallel for構文 
②pmap関数 
41
並列処理とループ計算 
①@parallel for構文 
42 
julia> nheads= @parallel (+) for 
i=1:200000000 int(randbool()) 
end 
99999830 
実行例)200000000回、論理値を発生させて、合計値を算出
並列処理とループ計算 
②pmap関数 
43 
julia> M = {rand(1000,1000) for i=1:10} 
julia> pmap(svd, M) 
実行例)1000×1000の行列を10個生成して、 それぞれを特異値分解
リモートリファレンスの 動的なスケジューリング 
pmap関数の実装 
45 
function pmap(f, lst) 
np = nprocs() # determine the number of processes available 
n = length(lst) 
results = cell(n) 
i= 1 
# function to produce the next work item from the queue. 
# in this case it's just an index. 
nextidx() = (idx=i; i+=1; idx) 
@sync begin 
for p=1:np 
if p != myid() || np == 1 
@asyncbegin 
while true 
idx= nextidx() 
if idx> n 
break 
end 
results[idx] = remotecall_fetch(p, f, lst[idx]) 
end 
end 
end 
end 
end 
results 
end
共有メモリの配列 
UNIX/Linux環境で、実験的に共有メモリの配列が提供 されている。 
46 
julia> addprocs(3) 
3-element Array{Any,1}: 
2 
3 
4 
julia> S = SharedArray(Int, (3,4), init= S -> S[localindexes(S)] = myid()) 
3x4 SharedArray{Int64,2}: 
1 2 3 4 
1 2 3 4 
1 2 3 4 
julia> S[3,2] = 7 
7 
julia> S 
3x4 SharedArray{Int64,2}: 
1 2 3 4 
1 2 3 4 
1 7 3 4
その他の話題 
クラスタマネージャ 
マルチマシンのクラスタ上でのも並列分散を実行可能。 
分散配列(distributed arrays) 
並列計算用の配列。 
•dzeros 
•dones 
•drand 
•drandn 
•dfill 
47
5. Juliaで並列計算実践編 
48
並列計算する処理 
今回は、k平均法とランダムフォレストの並列計算を実行。 
49 
k平均法 
(非階層的クラスタリング) 
ランダムフォレスト
k平均法の並列計算 
k平均法は、Clusteringパッケージを用いて実行する。 
50 
julia> # Clusteringパッケージのインストール 
julia> Pkg.add(“Clustering”) 
juliastats/Clustering.jl
k平均法の並列計算 
成分が一様乱数からなる5000×5000の行列を作成。 
クラスタ数を10個に設定して、k平均法を実行。 
51 
using Clustering 
srand(123) 
# 成分が一様乱数からなる5000×5000の行列の作成 
x = rand(5000, 5000) 
# クラスタ数 
k = 10 
# k平均法の実行 
@time @parallel result = [kmeans(x, k; maxiter=50) for i=1:200] 
exec_km.jl
k平均法の並列計算 
並列計算と逐次計算の実行時間を比較。 
52 
$ julia-p 4 exec_kmeans.jl 
elapsed time: 259.546022396 seconds (1251034300 bytes allocated, 0.01% gctime) 
exec_km.jl 
並列計算(4ワーカープロセス) 
$ juliaexec_kmeans.jl 
elapsed time: 742.803273255 seconds (3499799548 bytes allocated, 0.33% gctime) 
逐次計算 
260秒 
743秒 
約2.9倍の高速化
ランダムフォレストの並列計算 
DecisionTreeパッケージを用いてランダムフォレストを実行。 
53 
参考資料: 
第1回JuliaTokyo 
@gepuroJulia0.3でランダムフォレスト
ランダムフォレストの並列計算 
ソースコードは、木の生成が並列化可能な実装。 
54 
function build_forest{T<:FloatingPoint, U<:Real}(labels::Vector{T}, 
features::Matrix{U}, nsubfeatures::Integer, 
ntrees::Integer, maxlabels=0.5, partialsampling=0.7) 
partialsampling= partialsampling> 1.0 ? 1.0 : partialsampling 
Nlabels= length(labels) 
Nsamples= int(partialsampling* Nlabels) 
forest = @parallel(vcat) for iin [1:ntrees] 
inds= rand(1:Nlabels, Nsamples) 
build_tree(labels[inds], features[inds,:], maxlabels, 
nsubfeatures) 
end 
return Ensemble([forest]) 
end 
DecisionTree.jl 
404 
405 
406 
407 
408 
409 
410 
411 
412 
413
ランダムフォレストの並列計算 
ランダムフォレストは以下のように実行する。 
55 
using RDatasets 
using DecisionTree 
# Pimaインディアンデータセット(妊娠回数、血圧などと糖尿病の罹患有無) 
Pima_tr= dataset("MASS", "Pima.tr") 
# 説明変数 
features = array(Pima_tr[:, 1:7]) 
# 目的変数 
labels = array(Pima_tr[:, 8]); 
# ランダムフォレストの実行(特徴量数: 4個、生成する木の個数: 2000個、サンプルの選択割合: 70%) 
@time model = build_forest(labels, features, 4, 2000, 0.7); 
exec_rf.jl
ランダムフォレストの並列計算 
並列計算と逐次計算の計算時間を比較。 
56 
$ julia-p 4 exec_rf.jl 
elapsed time: 8.847219443 seconds (104840140 bytes allocated, 1.83% gctime) 
exec_rf.jl 
並列計算(4ワーカープロセス) 
$ juliaexec_rf.jl 
elapsed time: 12.908068361seconds (1479356232 bytes allocated, 11.24% gctime) 
逐次計算 
8.85秒 
12.91秒 
約1.5倍の高速化
ランダムフォレストの並列計算 
4つのワーカープロセスを使った割には効果が薄い? 
Pimaインディアンデータセットでは、特徴量がたったの7個。 
今回は、その中から4個をサンプリングしている。 
特徴量が多いデータを使えば、 もう少し並列計算の効果が上がるはず。 
どなたか、Rdatasetsパッケージに機械学習系の データセットを充実させてください! 
57
処理速度のまとめ 
並列計算 
(4ワーカー 
プロセス) 
逐次計算 
並列計算による 
高速化 
k平均法 
(5000×5000の 行列、クラスター数 10) 
260秒 
743秒 
約2.9倍 
ランダムフォレスト 
(サンプル数、 
特徴量の個数7) 
8.85秒 
12.91秒 
約1.5倍 
58 
注) 並列計算と逐次計算で乱数を一致させておらず、 
計算時間も複数回試行して比較すべきなので、 
あくまでご参考
6. まとめ 
59
Juliaにおける並列計算 
マスタープロセスからワーカープロセスへの一方通行メッセー ジパッシング(通信方式はソケット?) 
マスタープロセスからワーカープロセスにリモートコールで命令。 
ワーカープロセスの処理結果(リモートリファレンス形式)は、 マスタープロセスがフェッチして参照。 
60
Juliaにおける並列計算 
今後の調査事項・課題 
並列乱数生成(L’ecuyerの方法など) http://pseudotrue.com/2014/07/22/parallel- random-number-generation-in-julia/ 
できてる?できてない? 
フォーク等の他のワーカープロセス生成・通信方式での並列計算 は実行できるか? 
ロードバランシングのようなことはできる? 
メモリの管理(GC等) 
61
参考文献 
公式ドキュメント 
M.M.Maza, Parallel Ccomputing with Julia 公式ドキュメントの内容がコンパクトにまとまっていて分かり やすい。 
base/muil.jl 
なんだかんだで今はソースを直接読むのが、 理解向上の一番の近道? 
62

Contenu connexe

Tendances

Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Keigo Nishida
 
今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシンShinya Shimizu
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理Taiji Suzuki
 
よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理Masatoshi Yoshida
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向Motokawa Tetsuya
 
ウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタToshihisa Tanaka
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)Masahiro Suzuki
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリングKosei ABE
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」Keisuke Sugawara
 
KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告GentaYoshimura
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative ModelsDeep Learning JP
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説弘毅 露崎
 
20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列Toru Tamaki
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方joisino
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャHitoshiSHINABE1
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Surveytmtm otm
 

Tendances (20)

Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西Layer Normalization@NIPS+読み会・関西
Layer Normalization@NIPS+読み会・関西
 
今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン今さら聞けないカーネル法とサポートベクターマシン
今さら聞けないカーネル法とサポートベクターマシン
 
深層学習の数理
深層学習の数理深層学習の数理
深層学習の数理
 
よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
ウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタウィナーフィルタと適応フィルタ
ウィナーフィルタと適応フィルタ
 
GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
モンテカルロサンプリング
モンテカルロサンプリングモンテカルロサンプリング
モンテカルロサンプリング
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列20090924 姿勢推定と回転行列
20090924 姿勢推定と回転行列
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
Tensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャTensorflow Liteの量子化アーキテクチャ
Tensorflow Liteの量子化アーキテクチャ
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 

En vedette

プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介Kentaro Iizuka
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるShintaro Fukushima
 
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLang
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLangメカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLang
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLangTakeshi Kimura
 
Juliaでオンライン線形分類器つくった
Juliaでオンライン線形分類器つくったJuliaでオンライン線形分類器つくった
Juliaでオンライン線形分類器つくったTakeshi Ishita
 
ベイジアンディープニューラルネット
ベイジアンディープニューラルネットベイジアンディープニューラルネット
ベイジアンディープニューラルネットYuta Kashino
 
Convex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPTConvex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPTandrewmart11
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習Mitsuhisa Ohta
 

En vedette (9)

プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介プログラミング言語 Julia の紹介
プログラミング言語 Julia の紹介
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLang
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLangメカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLang
メカジョさんとジュリアたん♡ (Mechajyo and Julia-tan) #JuliaTokyo #JuliaLang
 
Juliaでオンライン線形分類器つくった
Juliaでオンライン線形分類器つくったJuliaでオンライン線形分類器つくった
Juliaでオンライン線形分類器つくった
 
Julia入門
Julia入門Julia入門
Julia入門
 
ベイジアンディープニューラルネット
ベイジアンディープニューラルネットベイジアンディープニューラルネット
ベイジアンディープニューラルネット
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
Convex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPTConvex Optimization Modelling with CVXOPT
Convex Optimization Modelling with CVXOPT
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習
 

Similaire à Juliaで並列計算

Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro工 久納
 
ジャパネットQB GPars
ジャパネットQB GParsジャパネットQB GPars
ジャパネットQB GParsTakahiro Sugiura
 
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーpi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーkunihikokaneko1
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストYohei Sato
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発Kentaro Ohkouchi
 
Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)TatsuyaKatayama
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Toshio Ehara
 
pi-13. 今までの総まとめ
pi-13. 今までの総まとめpi-13. 今までの総まとめ
pi-13. 今までの総まとめkunihikokaneko1
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)Takuya Tsuchida
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101Nobuaki Oshiro
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacateKinji Akemine
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Shintaro Fukushima
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
Q4 Mでメッセージキュー
Q4 MでメッセージキューQ4 Mでメッセージキュー
Q4 Mでメッセージキューngi group.
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Hidekazu Nakamura
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Hidekazu Nakamura
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習Takashi Kitano
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!notargs
 

Similaire à Juliaで並列計算 (20)

Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
ジャパネットQB GPars
ジャパネットQB GParsジャパネットQB GPars
ジャパネットQB GPars
 
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーpi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマー
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)Using PyFoam as library(第25回オープンCAE勉強会@関西)
Using PyFoam as library(第25回オープンCAE勉強会@関西)
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
 
pi-13. 今までの総まとめ
pi-13. 今までの総まとめpi-13. 今までの総まとめ
pi-13. 今までの総まとめ
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
Q4 Mでメッセージキュー
Q4 MでメッセージキューQ4 Mでメッセージキュー
Q4 Mでメッセージキュー
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発
 
mxnetで頑張る深層学習
mxnetで頑張る深層学習mxnetで頑張る深層学習
mxnetで頑張る深層学習
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
 

Plus de Shintaro Fukushima

20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdfShintaro Fukushima
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組みShintaro Fukushima
 
Materials Informatics and Python
Materials Informatics and PythonMaterials Informatics and Python
Materials Informatics and PythonShintaro Fukushima
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jlShintaro Fukushima
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門Shintaro Fukushima
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価Shintaro Fukushima
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するShintaro Fukushima
 
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出Shintaro Fukushima
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用Shintaro Fukushima
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理Shintaro Fukushima
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Shintaro Fukushima
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Shintaro Fukushima
 

Plus de Shintaro Fukushima (20)

20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
 
Materials Informatics and Python
Materials Informatics and PythonMaterials Informatics and Python
Materials Informatics and Python
 
BPstudy sklearn 20180925
BPstudy sklearn 20180925BPstudy sklearn 20180925
BPstudy sklearn 20180925
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理する
 
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
 
R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
外れ値
外れ値外れ値
外れ値
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
 

Dernier

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Dernier (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

Juliaで並列計算