1月28日、Simon Willison氏のブログで、「ggml : x2 speed for WASM by optimizing SIMD」というGitHub PRとその紹介記事が公開された。この記事では、WASMにおけるSIMD命令の最適化を活用し、処理速度を飛躍的に向上させる試みについて詳しく紹介されている。
以下に、その内容を紹介する。
GitHub上のggml : x2 speed for WASM by optimizing SIMDは、llama.cpp
向けにXuan-Son Nguyenが提出したPRである。WASM環境においてSIMD命令を活用し、qX_K_q8_K
およびqX_0_q8_0
といったドット積処理の高速化を実現するのが主な目的だ。以下はPR内で示されたコメントの引用である。
This PR provides a big jump in speed for WASM by leveraging SIMD instructions for
qX_K_q8_K
andqX_0_q8_0
dot product functions.Surprisingly, 99% of the code in this PR is written by DeekSeek-R1. The only thing I do is to develop tests and write prompts (with some trails and errors)
日本語訳(太字は編集者による):
この PR は、SIMD 命令とqX_0_q8_0ドット積関数を活用することで、WASM の速度を大幅に向上させます。
驚いたことに、 この PR のコードの 99% はDeekSeek-R1 によって書かれています。 私がやっているのは、 (試行錯誤しながら) テストを開発し、プロンプトを書くことです
著者によれば、SIMD命令を積極的に取り入れることで処理効率が大幅に向上し、WASMの速度が約2倍にアップした とのことだ。実装のほとんどをDeepSeek R1が生成したコードに依存しており、テストとプロンプトの作成を著者が担当したとしている。
さらに、このPRを導入するにあたり、DeepSeek R1によるコード生成の例として、こちらのプロンプト群が共有されている。
これらのプロンプトはchat.deepseek.comで直接実行し、1つのプロンプトあたり3〜5分ほど「思考」させるプロセスを経て作成されたという。
なお、本記事ではDeepSeek R1を用いてコードを書き換える様子を取り上げた事例も紹介されている。
特にllm_groq.pyプラグインを、llm_mistral.pyのキャッシュ済みモデルJSONパターンを模倣するかたちに書き換えたPRなどが挙げられている。その際のやり取りはこちらに記録されており、DeepSeek R1によるコード生成の有用性を示す好例といえる。
同様の試みをChatGPT o1(参照)でも行ったが、DeepSeek R1のほうが品質の高い提案をしたという。特にmodel_map
の扱いについて、DeepSeek R1が「動的にAPIのレスポンスをもとにモデルを登録すればよい」と結論付け、事実上model_map
を廃止する方向へ導いたプロセスは興味深い。
詳細は[ ggml : x2 speed for WASM by optimizing SIMD ]を参照していただきたい。