Slide 13
Slide 13 text
Ti p s 3 | 積 極 的 に G P G P U を 活 用 し よ う
A B CI に は C P U は 2 4 0 0 個 あ る が , G P U は 5 3 0 0 枚 あ る ! !
• 条 件 に よ る が , 上 手 く 書 け ば G P U 化 だ け で も 1 0 倍 以 上 高 速 化 で き る こ と も
• P y T or c h で も 書 け る が , C u P y な ら コ ー ド の 変 更 は ほ と ん ど 不 要
f r o m o p t _ e i n s u m i m p o r t c o n t r a c t
x = n p . r a n d o m . r a n d o m ( [ 1 0 0 0 0 , 5 0 ] ) # [ N , D ]
z = n p . r a n d o m . r a n d o m ( [ 1 0 0 0 0 , 1 0 ] ) # [ N , K ]
z / = z . s u m ( a x i s = - 1 , k e e p d i m s = T r u e )
e I = 1 e - 8 * n p . e y e ( x . s h a p e [ 1 ] )
f o r i i i n r a n g e ( 1 0 ) :
z s u m = z . s u m ( a x i s = 0 ) . c l i p ( 1 e - 8 )
p i = z s u m / z . s h a p e [ 0 ] # [ K ]
m u = c o n t r a c t ( " n k , n d - > k d " , z , x ) / z s u m [ : , N o n e ] # [ K , D ]
x m u = x [ : , N o n e ] - m u # [ N , K , D ]
V = c o n t r a c t ( " n k , n k d , n k e - > k d e " , z , x m u , x m u ) / z s u m [ : , N o n e , N o n e ] + e I
V i , ( _ , l d V ) = n p . l i n a l g . i n v ( V ) , n p . l i n a l g . s l o g d e t ( V )
l o g z = n p . l o g ( p i ) - 0 . 5 * ( l d V + c o n t r a c t ( " n k d , k d e , n k e - > n k " , x m u , V i , x m u ) )
z = n p . e x p ( l o g z - l o g s u m e x p ( l o g z , a x i s = - 1 , k e e p d i m s = T r u e ) )
f r o m o p t _ e i n s u m i m p o r t c o n t r a c t
x = c p . r a n d o m . r a n d o m ( [ 1 0 0 0 0 , 5 0 ] ) # [ N , D ]
z = c p . r a n d o m . r a n d o m ( [ 1 0 0 0 0 , 1 0 ] ) # [ N , K ]
z / = z . s u m ( a x i s = - 1 , k e e p d i m s = T r u e )
e I = 1 e - 8 * c p . e y e ( x . s h a p e [ 1 ] )
f o r i i i n r a n g e ( 1 0 ) :
z s u m = z . s u m ( a x i s = 0 ) . c l i p ( 1 e - 8 )
p i = z s u m / z . s h a p e [ 0 ] # [ K ]
m u = c o n t r a c t ( " n k , n d - > k d " , z , x ) / z s u m [ : , N o n e ] # [ K , D ]
x m u = x [ : , N o n e ] - m u # [ N , K , D ]
V = c o n t r a c t ( " n k , n k d , n k e - > k d e " , z , x m u , x m u ) / z s u m [ : , N o n e , N o n e ] + e I
V i , ( _ , l d V ) = c p . l i n a l g . i n v ( V ) , c p . l i n a l g . s l o g d e t ( V )
l o g z = c p . l o g ( p i ) - 0 . 5 * ( l d V + c o n t r a c t ( " n k d , k d e , n k e - > n k " , x m u , V i , x m u ) )
z = c p . e x p ( l o g z - l o g s u m e x p ( l o g z , a x i s = - 1 , k e e p d i m s = T r u e ) )
N u m P y で 書 い た E M -G M M → 9 9 5 0 m s C u P y で 書 い た E M -G M M → 5 0 4 m s !!
デ ー タ の 次 元 数 が 大 き い と 差 が 顕 著 な 傾 向
※ V 1 0 0 ノ ー ド (rt _ F = 1) で 計 測 @ 2 0 2 2/ 0 4/ 0 6
A B CI ( )
で 回 そ う 爆 速 深 層 学 習 基 礎 編 / 1 9
1 3