SlideShare a Scribd company logo
1 of 48
Download to read offline
私とOSSの25年
2021/5/15
早稲田大学情報理工学科講演会
光成滋生
• 自己紹介
• 会社紹介
• 普段の生活
• プログラミング歴(昔話)
• 午後のこ~だ
• 数学から暗号へ
• 楕円曲線とペアリング
• 関わっているプロジェクト
• Xbyak
• Intel oneDNN
• ブロックチェーン
• スーパーコンピュータ富岳
目次
2 / 48
• サイボウズ・ラボで主に暗号と最適化関係のR&D
• Twitter : @herumi
• GitHub : https://github.com/herumi/
• 資料 : https://slideshare.net/herumi/
• 主な活動
• OSS(オープンソースソフトウェア)を介在した
様々なプロジェクトとのゆるやかなつながり
自己紹介
暗号研究 ブロックチェーン
Intel oneDNN スーパーコンピュータ富岳
Xbyak
3 / 48
会社紹介
• チームワークあふれる社会を創る
• kintone
• 開発の知識がなくても業務に合わせたシステムを作成できる
• サイボウズOffice・Garoon
• スケジュールやワークフローの情報共有を支援する
• 累計12万5千社の企業
• 1千万人ユーザ
• クラウドサービス基盤
• 自社開発&運営
• データセンターも国内
サイボウズ
5 / 48
• 情報がオープン
• 経営会議を含むほとんどの議論が自社ツール上で行われる
• 横からつっこみ・質問・提案可能
• パソコン・モニタ・キーボードなどの開発環境の支援
• 電子書籍を含む書籍の購入手続きが簡単
• 「○○買ってください」と書き込むだけ
• 社内勉強会や社外活動の支援
• より長く働ける環境
• 働き方を柔軟に選択可能(ワーク重視やライフ重視など)
• (男性も)育児休暇や子供の送迎時間などを取りやすい
• 新型コロナ前から在宅勤務可能
詳細 : https://blog.cybozu.io/entry/2020/10/13/124546
社内環境・風土
6 / 48
• サイボウズの研究開発部門(子会社)
• 長期的な視点で自分でテーマを決めて研究・開発
• 自分の研究開発したOSSの著作権は原則個人に帰属
• https://cybozu-oss-policy.readthedocs.io/ja/latest/copyright.html
• 評価
• 論文や特許の数はカウントしない
• 社長曰く「社会に貢献しているかどうか」が重要
• 詳細 : https://cybozushiki.cybozu.co.jp/articles/m005323.html
サイボウズ・ラボ
7 / 48
• 学生支援制度
• https://labs.cybozu.co.jp/youth.html
• 学生が作りたいものをサポート
• 成果物は個人に帰属
• 奨励金制度あり
• 去年・今年はフルリモート
• 去年で10年経った
• 若干名募集中!
サイボウズ・ラボユース
8 / 48
• 研究や実装 ; 9割前後
• OSSの対応や開発をしたり、論文や資料を読んだり
• 他組織との打ち合わせ・論文執筆など
• 専門委員会、論文査読、C++WGなど少々
• ラボユース ; 1割前後
• 定例ミーティング・設計の相談やコードレビューなど
• 本社との関わり ; たまに
• 暗号・セキュリティ講義
• 本社製品のトラブルサポート(最近は殆ど無い)
• サイボウズOfficeの問題→Linuxのバグを見つけてパッチ作成
• Garoonの問題→PHPのバグを見つけて対策
私の普段の活動
9 / 48
• モチベーションの維持
• 基本的にテーマややることを全て自分で決める
• 指示されないので短期目標と長期目標設定が大変
• 気が乗らないときは休む
• インプットとアウトプットのバランス
• 気持ちの管理
• オン・オフの区別があまりない
• 有休とって開発してしまうこともしばしば
• あるテーマで疲れたら別のものにスイッチ
• 体調管理
• もう1年以上出社していない完全引きこもり
• 毎朝1時間前後ウォーキング・ジョギングなど20年以上
自分のコントロール
10 / 48
プログラミング歴
• 小学6年生
• ポケコンPC-1246
• ユーザメモリ約900バイト
• BASIC
• 中学3年生 ; FM-77AV20(8ビット)
• 大学生 ; FM-TOWNS(32ビット)
• まだBASIC
• 大学2回生
• Cコンパイラ(3.5万円); 当時コンパイラは買うものだった
• 修士1年
• 80386用アセンブラ(5.5万円) ; 当時アセンブラは買う(略
パソコン歴
12 / 48
• 『Oh! FM』(パソコン雑誌)
• 田舎ではこれしか情報源が無い
• 周りに知ってる人が誰もいない
• 6809や386のアセンブラ、言語作成、
数値計算、OS、ハードウェアなど
• 意味が分からなくても何度も読み返す
• 開発環境やマシンを持ってなくても
• 『フリーソフトウェアコレクション』
• FM-TOWNS用
• ユーザが作ったソフトを集めて富士通が安価で提供
• ソースコードが公開されているものが多かった
影響を受けたもの(1/2)
13 / 48
• FM-TOWNSのML(メーリングリスト)
• 質問したら親切にいろいろ教えてくれるコミュニティ
• Linux
• 『Linux + JE4』(1996年購入)
• メモリ2MBでHDD無しでもCD起動可能
• 起動に5分ぐらい待つけど
• kernel 1.2?
• コンパイラやアセンブラがついている!
• 画像元
http://solan2.pro.or.jp/~fuji/computerbooks/linux/linux.laser5.html
• いろんなものがソースで配付されていて自分でbuild
• 自分が作ったものはソースを公開する気持ちに
影響を受けたもの(2/2)
14 / 48
MP3エンコーダ
• MP3エンコーダ
• CDの音声データをMP3に変換するには(当時)
• CDデータをWAVファイルとして取り出してディスクに保存
• WAVファイルをMP3ファイルに変換する
• 変換に一晩掛かることも
• 私のHDDが約80MBだったので1曲(50MB)しか入らない
• 知人と高速なエンコーダを作り始める
• MLで知り合った人のお誘い
• FM-TOWNSとWindowsの両方で動作するもの
• 既存ソフトウェアを、出力は変えずに高速化する方針で
午後のこ~だ(1998~)
Windows版がこうだとは
私は長らく知らなかった
16 / 48
• SIMD対応のCPUが登場
• SIMD : 複数の整数・浮動小数点数をまとめて処理する命令
• 1997年IntelのMMX Pentium ; 整数のSIMD
• 1998年AMDのK6-2
• 専用命令3D Now!
• 続々登場する様々なSIMD命令セット
• IntelのSSE, SSE2, SSE3, SSSE3, AMDのEnhanced 3D Now!
• いろいろな協力者が現れる
• Linux, BeOS, FreeBSD, OS2など開発者のOSがばらばら
• 最終的には処理時間の9割以上をasm化
高速化への道
FM-TOWNSにK6-2を
無理やり載せて使う
アセンブラは当然非対応なので
自分で3D Now!に対応させる TOWNS HC+K6-III
レジスタの中身を見る
デバッグツールも作成
17 / 48
• 手動マージからバージョン管理システム(CVS)へ
• 初期 : メールで来たコードを私が手動でマージ(辛い)
• 他人のコミット差分メールを眺めるのはよい勉強
• 仕事でPM(プロジェクトマネージャ)を担当したときも
グループの進捗や問題点が肌感覚で分かる
• 継続的インテグレーション(CI)
• コード変更をサーバにpushしたら
ビルドと自動テスト
• 結果が不正ならメールで通知
• 1clkでも減らす競争
• 遅いと他のメンバーに上書きされて悔しい
開発スタイルの向上
コミット
ビルド
&テスト
結果
採用
18 / 48
• 複数の環境で確認することの重要性
• コンパイラの癖・バグや環境依存なものを実感
• 同じ命令を実行してもOSによって結果が異なることも
• FPUの演算モードやエラーハンドリングの違い
• 浮動小数点数の処理方法
• 精度が不要なところでは余計なものを「はしょる」
• sqr/inv/exp/logなどの計算方法 ; 未だに使える・使ってる技術
• 量が質を転化する
• オンタイムで「CD→リッピング→エンコード→MP3」可能に
• 広く使われた
• 「窓の杜金賞」「オンラインソフトウェア大賞」
• いろいろなリッピングソフトにバンドリングされる
よかったこと
19 / 48
• ブログ
• 最適化の試行錯誤の経緯など
• SIMDプログラミングの方法
• 後に「勉強になりました」と言ってもらえたことも
• その後、勉強会を主催したり参加したり
• x86最適化勉強会 2011~2018
• https://github.com/herumi/x86opti
• テキスト(無料PDF)
• 『パターン認識と機械学習の学習 普及版』
• https://herumi.github.io/prml/
• 『クラウドを支えるこれからの暗号技術』
• https://herumi.github.io/ango/
分かったことをアウトプットする
20 / 48
数学から暗号へ
• 物理や数学を中心にいろいろ勉強
• 電磁気学/解析力学/量子力学/特殊・一般相対性理論
• 関数解析/微分幾何/ゲージ理論/代数幾何/アーベル多様体 etc.
• 楕円曲線が面白い
• 暗号に使うらしい
• 1999年京都工芸繊維大学(当時)笠原先生のセミナーに参加
• 暗号のことを教えていただく
• 私は楕円曲線やペアリングなどの数学を解説
• 先生のご自宅でひたすら勉強会を定期開催
• 「楕円曲線のペアリング」を使った暗号技術を考える
• 研究者になるのは諦めて就職
• 音声・動画のコーデックや組み込みLinuxなどを扱う
大学
22 / 48
• 就職はしたけど暗号の勉強は細々と続ける
• いろんな大学の先生と共同研究
• 2004年IPA未踏スーパークリエータ
• ペアリングを使った放送型暗号の実装
• 2005年IPAの依頼でToyocryptの解読
• その後「F5.PDF」というメールが届く
• F4, F5は解読に使うグレブナー基底計算アルゴリズムの名前
• https://www.ipa.go.jp/security/enc/pressrelease/press_IPA-SMW_20050926.html
• 経産省の「情報化月間推進会議議長表彰」受賞
• じっくり研究的なことをしたくなってきた
• 2007年サイボウズ・ラボに転職
暗号研究
光成さん、F4.PDF送ったから作って
えっ?何がなんだか分かりません
23 / 48
• データを暗号化したまま処理可能な暗号方式
• 産総研、東大、早稲田大学などとの共同研究
• ユーザのプライバシーの向上
• https://herumi.github.io/she-wasm
準同型暗号
お弁当購入 購入せず
お酒購入 * *
購入せず * *
暗号文を送信 お菓子 ジュース お酒 お弁当
A * * * *
B * * * *
C * * * *
... * * * *
暗号文のままクロス集計
お弁当購入 購入せず
お酒購入 80 20
購入せず 10 30
復号
クラウドサーバ
集計後のデータ解析
24 / 48
XbyakとIntel
• 既存手法
• 組み込み関数
• 簡単だが期待通りのアセンブリコードにならないことも多い
• インラインアセンブラ
• 処理系依存・文法が嫌い(個人の感想)
• 外部アセンブラ
• 再利用しづらい
• macro, define, if elseなどの擬似命令が昔(40年?)のまま??
• C/C++との連携がしづらい
• 自分が使いたいアセンブラを開発
既存のアセンブラの不満点
26 / 48
• 見かけはpure C++
• C++の関数としてクラス化・ライブラリ化がしやすい
• JIT(実行時)コード生成
• CPUの特性に応じた柔軟な最適化が可能
• 既存のアセンブラはアセンブル時に値やコードが確定
• C/C++と連携しやすい
• 外部ツールに頼らずC++で完結する
• 2007年公開
• 自分のプログラム開発で使う
• 暗号ライブラリの開発など
• まれにゲームエミュレータなどで使われるがマイナー
• そもそもアセンブラというカテゴリがマイナー
Xbyak
27 / 48
• 2016年4月GitHubでAVX-512に対応してという依頼
• AVX-512はIntelの当時最新のSIMD命令セット
• まだその命令を実行できるCPUが世の中に無い
• Knights Landing(一般向けじゃない)は2016年6月
• Skylake-Xは2017年
AVX-512対応
そうだ、すぐに使いたい
深層学習ライブラリCaffeで使うつもり
将来的には対応したいけど
そんなに早く使いたいの?
分かった。AVX-512のフォーマットから勉強始めるよ
28 / 48
• AVX-512のマニュアルは1000ページ以上
• 新規レジスタ
• フォーマットが複雑怪奇
• 理解するのにかなり時間を費やした
• 最初はマニュアルのバグも
• どうしても分からなかった部分が次版で修正されていた
• 3カ月掛かって対応
• GitHubの依頼者はIntelの人だった
• そこから奇妙な関係が始まる
大変だった
29 / 48
• Intelが新しいCPUを発表したときの主な流れ
• IntelがCPUのスペックを公開する
→各種ツールが対応する→CPUが発売される
• GitHub上でXbyakに対応依頼やパッチが送られて来る
• 確認手段がマニュアルのみで辛いことが多い
• Intelが独自にXbyakにパッチを当てることも
• そのパッチが間違っていたので
「本家が対応したからそちらを使って」とお願いした
個人が企業をサポート?
パッチのバグを直して4FMAPSに対応したけどOp/En
T1_4Xはちゃんと動いてる? 自分では確認できない
Intelの社内バージョン(未公開)の
エミュレータでチェックしたよ
30 / 48
• Twitterでマシン欲しいなと
つぶやく
• 2CPU(100万円x2)112コア
サーバを送ってくださる
• Intel AMXの発表のとき
• 新CPUのスペック公開と同時に
パッチが来た
• GitHubのissueを眺める
• AMXって何?
全然知らないと焦る
• え、公開されたばかり???
• gcc, clangよりも先
嬉しいことも
31 / 48
• iWAPT 2018
• 自動パフォーマンスチューニングの国際ワークショップ
• Intelの招待講演
• http://iwapt.org/2018/iwapt2018-invitedtalk.html#talk1
• 内容はXbyakの紹介と使い方(ありがたい)
Intelの人が宣伝してくれる
32 / 48
• https://github.com/oneapi-src/oneDNN
• Intelが提唱する深層学習(DNN)のための
クロスプラットフォームライブラリ
• DNNに必要な基本演算を提供
• IntelだけでなくAArch64, NVIDIA GPUなどもサポート
• PyTorch, Tensorflow, PaddlePaddle, ONNX等のアプリで利用
画像元 https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit.html
Intel oneDNN
33 / 48
• 2021年4月7日のItmediaの記事
• Intelが「第3世代Xeonスケーラブルプロセッサ(Ice Lake)」
を発表 最大40コアで処理能力を向上
oneDNNのCPUエンジン
この部分にXbyakが利用されている
画像元 https://www.itmedia.co.jp/pcuser/articles/2104/07/news122.html
34 / 48
ブロックチェーン
• ペアリング暗号の研究は1999年から
実装は2003年の未踏IPAから継続していた
• 何度か世界最速実装して論文投稿
• 当時高速な実装のソースを公開する人はあまりいなかった
• 私ぐらい?
• 私のソースを
改良してレコード更新
• でもソースは非公開
• それって...
• http://sac2013.irmacs.sfu.ca/slides/s1.pdf
• 2010年に(理論の話で)IEICE論文賞受賞
ペアリング暗号の研究と開発
Xbyakによる
私の実装
36 / 48
• ペアリングを使ったゼロ知識証明の一種
• Aさんがある知識wを持っていることを
Bさんにその知識wを教えずに納得してもらう暗号技術
• 2014年にzk-SNARKの提案者からパッチと対応依頼
• https://github.com/scipr-lab/libsnark
• 当時Zcashなどで実験的に利用?
• ビットコイン ; 「AがBにC円送った」という情報は公開
• Zcash ; 「○が△に□円送った」としたい
• 中身は教えないがお金の動き
inputX + inputY = outputZ + outputW
は成立してほしい
zk-SNARK
37 / 48
• 2016年7月BLS署名の実装の依頼
• 当時まだ数名?
• BLS署名 ; ペアリングを使った高機能な署名
• 署名を使った多数決や複数個の署名を一つに集約したり可能
• そんな面白い使い方が。使ってもらえるならありがたい。
• 2019年Zurichの研究所にお宅訪問(議論のため軟禁状態?)
• 2021年5月 ; 200人近いメンバー & 3拠点
DFINITY
2017年にP2Pレイヤーのデモ
38 / 48
• 2019年Road to Devconという
勉強会で発表
• そのときDevconというのを知る
しかしチケットは既に売り切れ
• 主催者にお願いして手配していただく
• ありがとうございました
• 2019年Devcon 5
• 大阪開催参加者数千人?
• EthereumのPrysmatic Labsの人に会って使ってもらうことに
• 他にEthereum JS VM (Node.js), AZTEC protocol, Chainsafe,
Harmony.ONE, 0chain, etc.
• いろいろなところで使われてるらしい
• 困ったときだけGitHub issueやメールが来るので詳細不明
BLS署名を使うプロジェクトの増加
Devcon 5 2019
39 / 48
• サポートが大変
• Go, Java, C#, Node.js (WebAssembly), Rust, etc.
• 今年の5月連休はIBMのメインフレームLinuxONE対応をしてた
• とは言え、いろいろな言語・環境の勉強になる
• 私のライブラリに脆弱性を見つけると賞金が出ることが
あるらしい
• 学生の質問メールもできるだけ対応
• 日本の学生からはほぼ皆無(残念)
• ウイルスメールがたくさん来る
• ピーク時は1通/1分ぐらいで何日間も
• なぜかフィルタリングされず(最近は大丈夫)
嬉しいけど困ったことも
40 / 48
スパコン
• A64FX
• 富士通が開発した富岳のCPU
• Arm v8-A命令セット(スマートフォンとほぼ同じ)+SVE
• SVE ; SIMD命令セット
• A64FXでは32個の512ビットSIMDレジスタを持つ
• Intel AVX-512とよく似た構成
• ある日の富士通での会話(想像・伝聞)
2019年富士通からコンタクトが来る
スーパーコンピュータ富岳
富岳でもDNNを使いたい GPUではなくCPUベースなので
Intelの手法を調査
内部でXbyakというものを
使ってるらしい その作者知ってる!
(Xbyakってキワモノ系と
思っていたらこんなところに...)
42 / 48
• IntelのoneDNNを富岳に移植
画像元 https://www.hpci-office.jp/invite2/documents2/meeting_A64FX_210317/TuningTechMeeting_oneDNN.pdf
富岳用DNNライブラリの構成
Xbyak for A64FX
43 / 48
• Xbyak→Xbyak_aarch64
• CPUが異なるので富岳用のJITアセンブラが必要
• クラス設計は概ねXbyakを継承
• レジスタや個別メソッド・文法の方針を議論
• 富士通が実装
• 私もデバッグやリファクタリングでサポート
• GitHubのオープンな場で作業
• やりやすくて快適
• ただしXbyak_aarch64だけでは動かない
• 何故?
移植の概略
44 / 48
• JITアセンブラの移植だけでは動かない
• 「AVX-512コードを生成するコード」[AVX]を
「A64FX SVEコードを生成するコード」[SVE]に修正する必要
• 量が膨大なので大変
• AVX-512命令とSVE命令を熟知して
• Intelの最適化コード生成部を理解し
• それをSVE用の最適なコードを生成するコードを作る必要
• 速度的にクリティカルな部分は富士通が実装
• それ以外の一部のコードは私も担当
• Intelの本家oneDNNにmerge
• Intelの公式レポジトリにライバルCPU用のコードが入る
• 個人的にかなり感動
コード生成部の翻訳
45 / 48
• Xbyak_translator
• [AVX]を[SVE]に自動変換するライブラリの開発
• 富士通の力業
• 移植の手間が大幅に減る
• パフォーマンスは手作業に比べて劣るがうまく行くときも
• 詳細はhttps://blog.fltech.dev/entry/2020/11/18/fugaku-onednn-deep-dive-ja
富士通のよりアグレッシブな戦略
46 / 48
ざっくりとした年表
'96 '98 '99 '00 '01 '04 '05 '07 '10 '14 '16 '17 '18 '19 '20 '21
コーデック
午後のこ~だ
TwinVQ, MPEG etc.
暗号 ペアリングの研究・実装
Toyocrypt
BLS署名
準同型暗号
zk-SNARK
DFINITY Ethereum, etc.
10年
Xbyak Xbyakの実装
富岳版Xbyak
Intel caffe, MKL-DNN, oneDNN
10年
欲しくなった
ペアリングもXbyakも使われるようになるまでざっくり10年
asm, Linuxに触る
富岳版DNN
Xbyakによる新規実装
未踏IPA
DAPDNA
47 / 48
• OSSの観点から自分の活動の振り返り
• 恥ずかしいと思ってもまずはコードを公開してみる
• 自分がやりたいことをしつこく長く続けている
• ペアリングの研究・実装やXbyak
• たまたまよい結果につながった(ことがある)
• (書いてないけど)負の面ももちろんある
• 声を掛けられたらできるだけ対応している
• できる範囲で(自分を追い込みすぎないように)
• 教訓的なものはないけれど
• 長くやりたいなら体に気をつけよう
まとめ
48 / 48

More Related Content

What's hot

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろHiroshi Yamashita
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)MITSUNARI Shigeo
 
オントロジーとは?
オントロジーとは?オントロジーとは?
オントロジーとは?Kouji Kozaki
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用gree_tech
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介Ryohei Ueda
 
ナレッジグラフとオントロジー
ナレッジグラフとオントロジーナレッジグラフとオントロジー
ナレッジグラフとオントロジーUniversity of Tsukuba
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!Kazuhide Okamura
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介Preferred Networks
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化gree_tech
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 

What's hot (20)

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
充足可能性問題のいろいろ
充足可能性問題のいろいろ充足可能性問題のいろいろ
充足可能性問題のいろいろ
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
 
オントロジーとは?
オントロジーとは?オントロジーとは?
オントロジーとは?
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ブラックボックス最適化とその応用
ブラックボックス最適化とその応用ブラックボックス最適化とその応用
ブラックボックス最適化とその応用
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
PCL
PCLPCL
PCL
 
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
 
ナレッジグラフとオントロジー
ナレッジグラフとオントロジーナレッジグラフとオントロジー
ナレッジグラフとオントロジー
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 

Similar to 私とOSSの25年

Open design computer project(boost)
Open design computer project(boost)Open design computer project(boost)
Open design computer project(boost)Ito Takahiro
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料Naoki Shibata
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoShohei Hido
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたYou&I
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験についてRakuten Group, Inc.
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダKenichi Yoshida
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望Tetsuo Yamabe
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET CoreYuta Matsumura
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaShigeru Hanada
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)NTT DATA Technology & Innovation
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02Hiro Yoshioka
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 

Similar to 私とOSSの25年 (20)

Open design computer project(boost)
Open design computer project(boost)Open design computer project(boost)
Open design computer project(boost)
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について大規模ソフトウェア開発とテストの経験について
大規模ソフトウェア開発とテストの経験について
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
 
Getting Started .NET Core
Getting Started .NET CoreGetting Started .NET Core
Getting Started .NET Core
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 HiroshimaPostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 

More from MITSUNARI Shigeo

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコルMITSUNARI Shigeo
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advancedMITSUNARI Shigeo
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenMITSUNARI Shigeo
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装MITSUNARI Shigeo
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化MITSUNARI Shigeo
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介MITSUNARI Shigeo
 

More from MITSUNARI Shigeo (20)

暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル範囲証明つき準同型暗号とその対話的プロトコル
範囲証明つき準同型暗号とその対話的プロトコル
 
暗認本読書会13 advanced
暗認本読書会13 advanced暗認本読書会13 advanced
暗認本読書会13 advanced
 
暗認本読書会12
暗認本読書会12暗認本読書会12
暗認本読書会12
 
暗認本読書会11
暗認本読書会11暗認本読書会11
暗認本読書会11
 
暗認本読書会10
暗認本読書会10暗認本読書会10
暗認本読書会10
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgenIntel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
 
暗認本読書会8
暗認本読書会8暗認本読書会8
暗認本読書会8
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
暗認本読書会6
暗認本読書会6暗認本読書会6
暗認本読書会6
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
暗認本読書会4
暗認本読書会4暗認本読書会4
暗認本読書会4
 
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
Lifted-ElGamal暗号を用いた任意関数演算の二者間秘密計算プロトコルのmaliciousモデルにおける効率化
 
楕円曲線と暗号
楕円曲線と暗号楕円曲線と暗号
楕円曲線と暗号
 
HPC Phys-20201203
HPC Phys-20201203HPC Phys-20201203
HPC Phys-20201203
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介LazyFP vulnerabilityの紹介
LazyFP vulnerabilityの紹介
 

Recently uploaded

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

私とOSSの25年

  • 2. • 自己紹介 • 会社紹介 • 普段の生活 • プログラミング歴(昔話) • 午後のこ~だ • 数学から暗号へ • 楕円曲線とペアリング • 関わっているプロジェクト • Xbyak • Intel oneDNN • ブロックチェーン • スーパーコンピュータ富岳 目次 2 / 48
  • 3. • サイボウズ・ラボで主に暗号と最適化関係のR&D • Twitter : @herumi • GitHub : https://github.com/herumi/ • 資料 : https://slideshare.net/herumi/ • 主な活動 • OSS(オープンソースソフトウェア)を介在した 様々なプロジェクトとのゆるやかなつながり 自己紹介 暗号研究 ブロックチェーン Intel oneDNN スーパーコンピュータ富岳 Xbyak 3 / 48
  • 5. • チームワークあふれる社会を創る • kintone • 開発の知識がなくても業務に合わせたシステムを作成できる • サイボウズOffice・Garoon • スケジュールやワークフローの情報共有を支援する • 累計12万5千社の企業 • 1千万人ユーザ • クラウドサービス基盤 • 自社開発&運営 • データセンターも国内 サイボウズ 5 / 48
  • 6. • 情報がオープン • 経営会議を含むほとんどの議論が自社ツール上で行われる • 横からつっこみ・質問・提案可能 • パソコン・モニタ・キーボードなどの開発環境の支援 • 電子書籍を含む書籍の購入手続きが簡単 • 「○○買ってください」と書き込むだけ • 社内勉強会や社外活動の支援 • より長く働ける環境 • 働き方を柔軟に選択可能(ワーク重視やライフ重視など) • (男性も)育児休暇や子供の送迎時間などを取りやすい • 新型コロナ前から在宅勤務可能 詳細 : https://blog.cybozu.io/entry/2020/10/13/124546 社内環境・風土 6 / 48
  • 7. • サイボウズの研究開発部門(子会社) • 長期的な視点で自分でテーマを決めて研究・開発 • 自分の研究開発したOSSの著作権は原則個人に帰属 • https://cybozu-oss-policy.readthedocs.io/ja/latest/copyright.html • 評価 • 論文や特許の数はカウントしない • 社長曰く「社会に貢献しているかどうか」が重要 • 詳細 : https://cybozushiki.cybozu.co.jp/articles/m005323.html サイボウズ・ラボ 7 / 48
  • 8. • 学生支援制度 • https://labs.cybozu.co.jp/youth.html • 学生が作りたいものをサポート • 成果物は個人に帰属 • 奨励金制度あり • 去年・今年はフルリモート • 去年で10年経った • 若干名募集中! サイボウズ・ラボユース 8 / 48
  • 9. • 研究や実装 ; 9割前後 • OSSの対応や開発をしたり、論文や資料を読んだり • 他組織との打ち合わせ・論文執筆など • 専門委員会、論文査読、C++WGなど少々 • ラボユース ; 1割前後 • 定例ミーティング・設計の相談やコードレビューなど • 本社との関わり ; たまに • 暗号・セキュリティ講義 • 本社製品のトラブルサポート(最近は殆ど無い) • サイボウズOfficeの問題→Linuxのバグを見つけてパッチ作成 • Garoonの問題→PHPのバグを見つけて対策 私の普段の活動 9 / 48
  • 10. • モチベーションの維持 • 基本的にテーマややることを全て自分で決める • 指示されないので短期目標と長期目標設定が大変 • 気が乗らないときは休む • インプットとアウトプットのバランス • 気持ちの管理 • オン・オフの区別があまりない • 有休とって開発してしまうこともしばしば • あるテーマで疲れたら別のものにスイッチ • 体調管理 • もう1年以上出社していない完全引きこもり • 毎朝1時間前後ウォーキング・ジョギングなど20年以上 自分のコントロール 10 / 48
  • 12. • 小学6年生 • ポケコンPC-1246 • ユーザメモリ約900バイト • BASIC • 中学3年生 ; FM-77AV20(8ビット) • 大学生 ; FM-TOWNS(32ビット) • まだBASIC • 大学2回生 • Cコンパイラ(3.5万円); 当時コンパイラは買うものだった • 修士1年 • 80386用アセンブラ(5.5万円) ; 当時アセンブラは買う(略 パソコン歴 12 / 48
  • 13. • 『Oh! FM』(パソコン雑誌) • 田舎ではこれしか情報源が無い • 周りに知ってる人が誰もいない • 6809や386のアセンブラ、言語作成、 数値計算、OS、ハードウェアなど • 意味が分からなくても何度も読み返す • 開発環境やマシンを持ってなくても • 『フリーソフトウェアコレクション』 • FM-TOWNS用 • ユーザが作ったソフトを集めて富士通が安価で提供 • ソースコードが公開されているものが多かった 影響を受けたもの(1/2) 13 / 48
  • 14. • FM-TOWNSのML(メーリングリスト) • 質問したら親切にいろいろ教えてくれるコミュニティ • Linux • 『Linux + JE4』(1996年購入) • メモリ2MBでHDD無しでもCD起動可能 • 起動に5分ぐらい待つけど • kernel 1.2? • コンパイラやアセンブラがついている! • 画像元 http://solan2.pro.or.jp/~fuji/computerbooks/linux/linux.laser5.html • いろんなものがソースで配付されていて自分でbuild • 自分が作ったものはソースを公開する気持ちに 影響を受けたもの(2/2) 14 / 48
  • 16. • MP3エンコーダ • CDの音声データをMP3に変換するには(当時) • CDデータをWAVファイルとして取り出してディスクに保存 • WAVファイルをMP3ファイルに変換する • 変換に一晩掛かることも • 私のHDDが約80MBだったので1曲(50MB)しか入らない • 知人と高速なエンコーダを作り始める • MLで知り合った人のお誘い • FM-TOWNSとWindowsの両方で動作するもの • 既存ソフトウェアを、出力は変えずに高速化する方針で 午後のこ~だ(1998~) Windows版がこうだとは 私は長らく知らなかった 16 / 48
  • 17. • SIMD対応のCPUが登場 • SIMD : 複数の整数・浮動小数点数をまとめて処理する命令 • 1997年IntelのMMX Pentium ; 整数のSIMD • 1998年AMDのK6-2 • 専用命令3D Now! • 続々登場する様々なSIMD命令セット • IntelのSSE, SSE2, SSE3, SSSE3, AMDのEnhanced 3D Now! • いろいろな協力者が現れる • Linux, BeOS, FreeBSD, OS2など開発者のOSがばらばら • 最終的には処理時間の9割以上をasm化 高速化への道 FM-TOWNSにK6-2を 無理やり載せて使う アセンブラは当然非対応なので 自分で3D Now!に対応させる TOWNS HC+K6-III レジスタの中身を見る デバッグツールも作成 17 / 48
  • 18. • 手動マージからバージョン管理システム(CVS)へ • 初期 : メールで来たコードを私が手動でマージ(辛い) • 他人のコミット差分メールを眺めるのはよい勉強 • 仕事でPM(プロジェクトマネージャ)を担当したときも グループの進捗や問題点が肌感覚で分かる • 継続的インテグレーション(CI) • コード変更をサーバにpushしたら ビルドと自動テスト • 結果が不正ならメールで通知 • 1clkでも減らす競争 • 遅いと他のメンバーに上書きされて悔しい 開発スタイルの向上 コミット ビルド &テスト 結果 採用 18 / 48
  • 19. • 複数の環境で確認することの重要性 • コンパイラの癖・バグや環境依存なものを実感 • 同じ命令を実行してもOSによって結果が異なることも • FPUの演算モードやエラーハンドリングの違い • 浮動小数点数の処理方法 • 精度が不要なところでは余計なものを「はしょる」 • sqr/inv/exp/logなどの計算方法 ; 未だに使える・使ってる技術 • 量が質を転化する • オンタイムで「CD→リッピング→エンコード→MP3」可能に • 広く使われた • 「窓の杜金賞」「オンラインソフトウェア大賞」 • いろいろなリッピングソフトにバンドリングされる よかったこと 19 / 48
  • 20. • ブログ • 最適化の試行錯誤の経緯など • SIMDプログラミングの方法 • 後に「勉強になりました」と言ってもらえたことも • その後、勉強会を主催したり参加したり • x86最適化勉強会 2011~2018 • https://github.com/herumi/x86opti • テキスト(無料PDF) • 『パターン認識と機械学習の学習 普及版』 • https://herumi.github.io/prml/ • 『クラウドを支えるこれからの暗号技術』 • https://herumi.github.io/ango/ 分かったことをアウトプットする 20 / 48
  • 22. • 物理や数学を中心にいろいろ勉強 • 電磁気学/解析力学/量子力学/特殊・一般相対性理論 • 関数解析/微分幾何/ゲージ理論/代数幾何/アーベル多様体 etc. • 楕円曲線が面白い • 暗号に使うらしい • 1999年京都工芸繊維大学(当時)笠原先生のセミナーに参加 • 暗号のことを教えていただく • 私は楕円曲線やペアリングなどの数学を解説 • 先生のご自宅でひたすら勉強会を定期開催 • 「楕円曲線のペアリング」を使った暗号技術を考える • 研究者になるのは諦めて就職 • 音声・動画のコーデックや組み込みLinuxなどを扱う 大学 22 / 48
  • 23. • 就職はしたけど暗号の勉強は細々と続ける • いろんな大学の先生と共同研究 • 2004年IPA未踏スーパークリエータ • ペアリングを使った放送型暗号の実装 • 2005年IPAの依頼でToyocryptの解読 • その後「F5.PDF」というメールが届く • F4, F5は解読に使うグレブナー基底計算アルゴリズムの名前 • https://www.ipa.go.jp/security/enc/pressrelease/press_IPA-SMW_20050926.html • 経産省の「情報化月間推進会議議長表彰」受賞 • じっくり研究的なことをしたくなってきた • 2007年サイボウズ・ラボに転職 暗号研究 光成さん、F4.PDF送ったから作って えっ?何がなんだか分かりません 23 / 48
  • 24. • データを暗号化したまま処理可能な暗号方式 • 産総研、東大、早稲田大学などとの共同研究 • ユーザのプライバシーの向上 • https://herumi.github.io/she-wasm 準同型暗号 お弁当購入 購入せず お酒購入 * * 購入せず * * 暗号文を送信 お菓子 ジュース お酒 お弁当 A * * * * B * * * * C * * * * ... * * * * 暗号文のままクロス集計 お弁当購入 購入せず お酒購入 80 20 購入せず 10 30 復号 クラウドサーバ 集計後のデータ解析 24 / 48
  • 26. • 既存手法 • 組み込み関数 • 簡単だが期待通りのアセンブリコードにならないことも多い • インラインアセンブラ • 処理系依存・文法が嫌い(個人の感想) • 外部アセンブラ • 再利用しづらい • macro, define, if elseなどの擬似命令が昔(40年?)のまま?? • C/C++との連携がしづらい • 自分が使いたいアセンブラを開発 既存のアセンブラの不満点 26 / 48
  • 27. • 見かけはpure C++ • C++の関数としてクラス化・ライブラリ化がしやすい • JIT(実行時)コード生成 • CPUの特性に応じた柔軟な最適化が可能 • 既存のアセンブラはアセンブル時に値やコードが確定 • C/C++と連携しやすい • 外部ツールに頼らずC++で完結する • 2007年公開 • 自分のプログラム開発で使う • 暗号ライブラリの開発など • まれにゲームエミュレータなどで使われるがマイナー • そもそもアセンブラというカテゴリがマイナー Xbyak 27 / 48
  • 28. • 2016年4月GitHubでAVX-512に対応してという依頼 • AVX-512はIntelの当時最新のSIMD命令セット • まだその命令を実行できるCPUが世の中に無い • Knights Landing(一般向けじゃない)は2016年6月 • Skylake-Xは2017年 AVX-512対応 そうだ、すぐに使いたい 深層学習ライブラリCaffeで使うつもり 将来的には対応したいけど そんなに早く使いたいの? 分かった。AVX-512のフォーマットから勉強始めるよ 28 / 48
  • 29. • AVX-512のマニュアルは1000ページ以上 • 新規レジスタ • フォーマットが複雑怪奇 • 理解するのにかなり時間を費やした • 最初はマニュアルのバグも • どうしても分からなかった部分が次版で修正されていた • 3カ月掛かって対応 • GitHubの依頼者はIntelの人だった • そこから奇妙な関係が始まる 大変だった 29 / 48
  • 30. • Intelが新しいCPUを発表したときの主な流れ • IntelがCPUのスペックを公開する →各種ツールが対応する→CPUが発売される • GitHub上でXbyakに対応依頼やパッチが送られて来る • 確認手段がマニュアルのみで辛いことが多い • Intelが独自にXbyakにパッチを当てることも • そのパッチが間違っていたので 「本家が対応したからそちらを使って」とお願いした 個人が企業をサポート? パッチのバグを直して4FMAPSに対応したけどOp/En T1_4Xはちゃんと動いてる? 自分では確認できない Intelの社内バージョン(未公開)の エミュレータでチェックしたよ 30 / 48
  • 31. • Twitterでマシン欲しいなと つぶやく • 2CPU(100万円x2)112コア サーバを送ってくださる • Intel AMXの発表のとき • 新CPUのスペック公開と同時に パッチが来た • GitHubのissueを眺める • AMXって何? 全然知らないと焦る • え、公開されたばかり??? • gcc, clangよりも先 嬉しいことも 31 / 48
  • 32. • iWAPT 2018 • 自動パフォーマンスチューニングの国際ワークショップ • Intelの招待講演 • http://iwapt.org/2018/iwapt2018-invitedtalk.html#talk1 • 内容はXbyakの紹介と使い方(ありがたい) Intelの人が宣伝してくれる 32 / 48
  • 33. • https://github.com/oneapi-src/oneDNN • Intelが提唱する深層学習(DNN)のための クロスプラットフォームライブラリ • DNNに必要な基本演算を提供 • IntelだけでなくAArch64, NVIDIA GPUなどもサポート • PyTorch, Tensorflow, PaddlePaddle, ONNX等のアプリで利用 画像元 https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit.html Intel oneDNN 33 / 48
  • 34. • 2021年4月7日のItmediaの記事 • Intelが「第3世代Xeonスケーラブルプロセッサ(Ice Lake)」 を発表 最大40コアで処理能力を向上 oneDNNのCPUエンジン この部分にXbyakが利用されている 画像元 https://www.itmedia.co.jp/pcuser/articles/2104/07/news122.html 34 / 48
  • 36. • ペアリング暗号の研究は1999年から 実装は2003年の未踏IPAから継続していた • 何度か世界最速実装して論文投稿 • 当時高速な実装のソースを公開する人はあまりいなかった • 私ぐらい? • 私のソースを 改良してレコード更新 • でもソースは非公開 • それって... • http://sac2013.irmacs.sfu.ca/slides/s1.pdf • 2010年に(理論の話で)IEICE論文賞受賞 ペアリング暗号の研究と開発 Xbyakによる 私の実装 36 / 48
  • 37. • ペアリングを使ったゼロ知識証明の一種 • Aさんがある知識wを持っていることを Bさんにその知識wを教えずに納得してもらう暗号技術 • 2014年にzk-SNARKの提案者からパッチと対応依頼 • https://github.com/scipr-lab/libsnark • 当時Zcashなどで実験的に利用? • ビットコイン ; 「AがBにC円送った」という情報は公開 • Zcash ; 「○が△に□円送った」としたい • 中身は教えないがお金の動き inputX + inputY = outputZ + outputW は成立してほしい zk-SNARK 37 / 48
  • 38. • 2016年7月BLS署名の実装の依頼 • 当時まだ数名? • BLS署名 ; ペアリングを使った高機能な署名 • 署名を使った多数決や複数個の署名を一つに集約したり可能 • そんな面白い使い方が。使ってもらえるならありがたい。 • 2019年Zurichの研究所にお宅訪問(議論のため軟禁状態?) • 2021年5月 ; 200人近いメンバー & 3拠点 DFINITY 2017年にP2Pレイヤーのデモ 38 / 48
  • 39. • 2019年Road to Devconという 勉強会で発表 • そのときDevconというのを知る しかしチケットは既に売り切れ • 主催者にお願いして手配していただく • ありがとうございました • 2019年Devcon 5 • 大阪開催参加者数千人? • EthereumのPrysmatic Labsの人に会って使ってもらうことに • 他にEthereum JS VM (Node.js), AZTEC protocol, Chainsafe, Harmony.ONE, 0chain, etc. • いろいろなところで使われてるらしい • 困ったときだけGitHub issueやメールが来るので詳細不明 BLS署名を使うプロジェクトの増加 Devcon 5 2019 39 / 48
  • 40. • サポートが大変 • Go, Java, C#, Node.js (WebAssembly), Rust, etc. • 今年の5月連休はIBMのメインフレームLinuxONE対応をしてた • とは言え、いろいろな言語・環境の勉強になる • 私のライブラリに脆弱性を見つけると賞金が出ることが あるらしい • 学生の質問メールもできるだけ対応 • 日本の学生からはほぼ皆無(残念) • ウイルスメールがたくさん来る • ピーク時は1通/1分ぐらいで何日間も • なぜかフィルタリングされず(最近は大丈夫) 嬉しいけど困ったことも 40 / 48
  • 42. • A64FX • 富士通が開発した富岳のCPU • Arm v8-A命令セット(スマートフォンとほぼ同じ)+SVE • SVE ; SIMD命令セット • A64FXでは32個の512ビットSIMDレジスタを持つ • Intel AVX-512とよく似た構成 • ある日の富士通での会話(想像・伝聞) 2019年富士通からコンタクトが来る スーパーコンピュータ富岳 富岳でもDNNを使いたい GPUではなくCPUベースなので Intelの手法を調査 内部でXbyakというものを 使ってるらしい その作者知ってる! (Xbyakってキワモノ系と 思っていたらこんなところに...) 42 / 48
  • 44. • Xbyak→Xbyak_aarch64 • CPUが異なるので富岳用のJITアセンブラが必要 • クラス設計は概ねXbyakを継承 • レジスタや個別メソッド・文法の方針を議論 • 富士通が実装 • 私もデバッグやリファクタリングでサポート • GitHubのオープンな場で作業 • やりやすくて快適 • ただしXbyak_aarch64だけでは動かない • 何故? 移植の概略 44 / 48
  • 45. • JITアセンブラの移植だけでは動かない • 「AVX-512コードを生成するコード」[AVX]を 「A64FX SVEコードを生成するコード」[SVE]に修正する必要 • 量が膨大なので大変 • AVX-512命令とSVE命令を熟知して • Intelの最適化コード生成部を理解し • それをSVE用の最適なコードを生成するコードを作る必要 • 速度的にクリティカルな部分は富士通が実装 • それ以外の一部のコードは私も担当 • Intelの本家oneDNNにmerge • Intelの公式レポジトリにライバルCPU用のコードが入る • 個人的にかなり感動 コード生成部の翻訳 45 / 48
  • 46. • Xbyak_translator • [AVX]を[SVE]に自動変換するライブラリの開発 • 富士通の力業 • 移植の手間が大幅に減る • パフォーマンスは手作業に比べて劣るがうまく行くときも • 詳細はhttps://blog.fltech.dev/entry/2020/11/18/fugaku-onednn-deep-dive-ja 富士通のよりアグレッシブな戦略 46 / 48
  • 47. ざっくりとした年表 '96 '98 '99 '00 '01 '04 '05 '07 '10 '14 '16 '17 '18 '19 '20 '21 コーデック 午後のこ~だ TwinVQ, MPEG etc. 暗号 ペアリングの研究・実装 Toyocrypt BLS署名 準同型暗号 zk-SNARK DFINITY Ethereum, etc. 10年 Xbyak Xbyakの実装 富岳版Xbyak Intel caffe, MKL-DNN, oneDNN 10年 欲しくなった ペアリングもXbyakも使われるようになるまでざっくり10年 asm, Linuxに触る 富岳版DNN Xbyakによる新規実装 未踏IPA DAPDNA 47 / 48
  • 48. • OSSの観点から自分の活動の振り返り • 恥ずかしいと思ってもまずはコードを公開してみる • 自分がやりたいことをしつこく長く続けている • ペアリングの研究・実装やXbyak • たまたまよい結果につながった(ことがある) • (書いてないけど)負の面ももちろんある • 声を掛けられたらできるだけ対応している • できる範囲で(自分を追い込みすぎないように) • 教訓的なものはないけれど • 長くやりたいなら体に気をつけよう まとめ 48 / 48