タイムテーブル Timetable

タイムテーブルに戻る
Go × SIMDで高速化するベクトル検索 ~ ルーフラインモデルでSIMDが効く境界を探れ! ~
Go 1.26で標準ライブラリに実験的なSIMDパッケージ(`simd/archsimd`)が入りました。アセンブリもcgoも書かずに、Pure GoでCPUのベクトル命令を直接扱える時代の始まりです。
このワークショップでは、RAGやセマンティック検索を支えるベクトル検索を、外部ライブラリなしのPure Goで作り、高速化していきます。その過程でAVXやFMAなど基本的な命令を学びつつ、GoでSIMDを扱うための各種APIの仕様を学びます。
また、単にSIMDを適用して高速化するだけでなく、高速化するまでの「進め方」も体験できます。実践ではメモリ律速などの理由でSIMDを適用しただけでは速くならないケースが頻発します。そこでルーフラインモデルを採用し「いま自分のコードがどこで詰まっているか」を見て、SIMDを最大限に活用する打ち手を決めるという一連の流れを体験できます。GoでSIMDを扱う場面に限らず、あらゆる性能改善で使える思考をお伝えします。
具体的には「測る → 詰まりの原因を特定 → その原因に効く手を打つ」という進め方で、SIMD化・クエリのバッチ化・量子化などの手法を使い、「SIMDを使ったのに早くならない」といったあるあるを「なぜ起きるのか、どう解決するか」を考えながら参加者自身のベンチマークで体感します。GoでSIMDを採用する際の羅針盤となります。
### 参加に必要なもの
- Goの基礎的な知識。
- ベクトル検索、CPUアーキテクチャの予備知識は要りません。
- GitHub Codespacesの用意
- ワークショップ用のリポジトリを用意するので、参加者は各自のGitHub Codespacesを起動するだけです。必要なのはGitHubアカウントだけです。
### 当日の進行
事前構築済みの教材一式(実装済みコードと、解説文書)を配布します。各 Stage で実コードを読み、その場でベンチマークを走らせて性能と算術強度を測りルーフラインと比較して今のボトルネックを特定し、打ち手を決めて進めます。当日は円滑な進行のために数名のスタッフを用意します。
### 参加者が持ち帰れること
- SIMDパッケージ(simd/archsimd)を扱う知識
- GoでSIMDを含めて処理を高速化していく知識
- ルーフトップモデルで次の最適化を判断するための知識
- ベクトル検索の知識
「SIMDが効く境界」を自分の目で見極める力は、ベクトル検索に限らずあらゆる高速化で武器になります。「標準ライブラリだけでGoを高性能計算の領域へ」その手応えを持ち帰っていただきます。
LayerX, Inc.
LayerX Inc. MLOps Engineer & Search Engineer. Interested in LLM & Information Retrieval. ex: M3, Inc. graduated from Nagoya Univ.