学生向けのMFGプログラムコンテスト、MFGチャレンジが無事終わりました。ありがとうございました!

MFG チャレンジ 2025 学生GPUプログラミングコンテスト結果発表

学生向けという事とFireAlpaca SE 3.0のリリースが思ったよりも大変でバタバタしたのもあり、 このブログではアナウンスしてませんでしたが。 応募は結構あって、質も想像以上にレベルが高いものになりました。 いやぁ、ありがとうございます。嬉しいですね。

自分はコードを一通り読んで審査したのですが、このコードを読むというのが思った以上に大変で、 むしろこれ以上多かったら見きれなかったですね…

実際に始めるまでは一件も来なかったらどうしよう?と不安だったくらいなのですが、 結果としてはかなり成功したと言っていいんじゃないでしょうか。 ドキュメントなどもまだ最低限しかなく、GPUによるCG処理という本質的な難しさもあるのに、 これだけの応募があったのは本当に素晴らしいです。

受賞者とはコンタクトをとって今後の話が進んでいくと思いますが(私はその辺はノータッチですが)、 そのうちストアに並んでいくと理解しています。

学生向けのコンテストなのでここに書いても対象者の目にとまる事はあまり無さそうですが、 自分の思った事などを書いておきます。

大賞の水彩画フィルターの話

大賞の水彩画フィルターは素晴らしいですね。Kuwahara Filterで水彩画っぽいエフェクト、 という所まではありがちなフィルタではありますが(逆に言えばそのくらいでも十分良く見かけるレベル)、 そこに紙の滲みや紙の凹凸や顔料の性質をシミュレートした効果が色々あって、 一つ一つが論文でありそうなものをうまく組み合わせて、全体として素晴らしい効果を実現しています。 いやぁ、これは凄い。

色空間もちゃんとメトリックスペースを使っていたり、既存研究のチョイスもセンスがあって、 ちゃんと勉強しているなぁ、と感心しました。むしろ自分ももっと勉強しないとなぁ、と背筋が伸びる思いです。

3D CGのアルゴリズムから2Dのフィルタに応用できそうなものを絵を描く人たちに届ける、というのがMFGの狙っていた事なのだけれど、 このフィルタはまさにそういうものの非常にレベルの高い版、という感じで、リリースしてからそれほどまだ時間が経ってないのにこんなのが出てきて、 純粋に驚きました。

Fractal Brownian Motionのノイズは初めて見たけれどいいですね、これ。 こういう特性のあるノイズで色々な効果を作っていくのは色々応用がありそうで楽しみですね。

karino2賞のコントラスト強調

審査員賞として自分が選んだのはコントラスト協調でした。 これは写真がくっきりする感じのフィルタです。

アルゴリズムとしては周囲の平均をとって、真ん中のピクセルと差分を求めて、この差をなんやかやする、というものです。 計算としては凄くシンプルでいかにもありそうですが、 少なくとも自分の手持ちの本には無かった程度にはあまり見かけないものですね。

こういう格子モデルっぽい単純な計算というのは、もともと物理学科出身の自分としては好きなんですよね。 何をしているのか理解しやすく、それでいて実際の動きが思ったよりもちゃんとしている。 こういうのは物理出身の人は好きになっちゃいますよね。

こういう単純だけど一捻りある計算が、実際にはどういう性質を持っているのか、というのをインタラクティブに調べる事が出来る、 というのはMFGの面白さだな、と思いました。

賞には選べないけど素晴らしいという話

いくつかのフィルタは、アイデアをそのまま実装してみたがちょっと期待通りの挙動をしていない、というものでした。 これらはここから問題を修正していって凄く良いものになるポテンシャルがあるという点で、 試みとしてとても価値あるものです。 こうしたフィルタはとても評価したい。

評価したいのだけれど、そういう事を言うと全部入賞になってコンテストにならないため、 断腸の思いでこうしたフィルタは選べませんでした。

ただフィルタ開発という点では、こういう思いついたアイデアを実際に形にしてみた、 そうしたらこうなった、というのを見る事が出来る形にした、 というのは本当に素晴らしい事です。 実際アイデアとしては面白いのでもうちょっと工夫してみたいなぁ、と私が個人的に思ったものも結構ありました。

AI生成のフィルタの多様さ

今回はほぼ全部手で書いたフィルタの方が多かったですが、大部分生成AIで作ったフィルタも2割くらい含まれていました。 以前AIで生成したコードのレビュー問題についてブログを書いていたけれど、まさかこんなに早く現実の問題として自分の前に来るとは…

読むのは人間が書いたフィルタよりも明らかに大変でした。 意図が読み取りづらいというか。 今回はそこまで多く無かったので頑張って読みましたが、もっと多くなったら何かしら対策が必要ですねぇ。

さて、AIにコードを生成させて作ったフィルタですが、これも思ったよりも多様性があって、なかなか興味深かったです。 一口にAIで生成したフィルタと言っても、明らかに出来の良さに大きな差がある。 最初の目の付け所だったりフィルタとしてどう見せるかの所の試行錯誤のがんばり具合だったり、 色々な所で大きく違いが出ている。 生成AIの時代に必要な開発力とはなんなのか?というのを考えさせられる体験でした。 これはかなりセンスが出るなぁ、と思いました。

人間が書いたフィルタというのが多様であるように、生成AIに作らせたフィルタも多様で一概に言えないのですね。 言われてみれば当たり前ですが、このコンテストでたくさんの例に触れるまではあまり良く理解出来ていませんでした。

高校生の応募なども結構あり、「高校生がGPUプログラミング!」などと自分的には一人で盛り上がる部分もありました。 生成AIが裾野を広げるのに有益なのは間違いない。

何をユーザーに操作させるか?という難しさ

全体的に、ユーザービリティというか、ユーザーに何を操作させるべきか、というデザインのあたりは弱いな、という印象を受けました。

不要なスライダーが多い。

アルゴリズムとしてパラメータになっているものは全部スライダーにしてしまう、というのは、一見正しそうだけれど、ユーザー視点では何を選んだら良いのかわからない、と戸惑わせてしまう原因になります。 アーティストが操作出来るものを多くしてしまうと、使い方を覚えるのも難しくなります。 理想的にはやりたい調整だけが出来てそれ以外の調整は出来ない、という風にしたい所ですが、後者の視点が欠けていると思いました。

また、パラメータが組み合わせで意味のあるケースでは、より感覚的に理解出来るような値として調整させて、 それを内部のパラメータに変換したり、と行ったような、見せ方の工夫は大切になります。 この辺はフィルタ全体としては工夫されているものも見かけましたが、 操作させるwidgetのあたりでの工夫は足りていないものが多いな、という印象を受けました。

この辺はユーザーがアーティストであるというお絵描きアプリの特殊な性質も出て面白い所です。 感覚的に理解出来るように見せるというのは腕の見せどころと思います。

ベクトル演算などのMFGっぽい言語機能の活用具合について

応募作品を見て意外だったのが、ベクトル演算をあまり使い慣れていない、という事でした。

シェーダーはswizzle演算子などがわざわざあるくらいベクトル演算は良く使われているし、 機械学習などの近年の画像処理でもベクトル演算は良く使われているので、 現代だと大体どこでもあるという印象なのですが。 イマドキの言語にあまり慣れてないなぁ、と言う印象です。 学生なのになんで!?

応募作品の多くのコードは昔ながらのC, C++の画像処理のコードをGPU化したようなもので、ベクトル演算は一切使われてなかったと思います。 ただGPUプログラムには慣れてそうで、プログラムに慣れてないと言うのとも違う、不思議な感じでした。 どういうバックグラウンドからやってくるとこうなるのでしょうか?

パイプラインを使っている人も一人もいませんでした。これもちょっと意外ですね。 関数型言語とかdplyrとかから来た人はいないという事だと思います。 全体的にRっぽいコードを書く人は一人もいなかったので、Rは人気無いんですかね。

ただシェーダーは愚直にグエッというコードを書くしかない事も多くて、 そういう時に変に小賢しい工夫をしようとして全然何も作れないよりも、バンっとコピペでエイっと書く方が正しい事が多いので、 これはこれで正しいCGプログラムだよなぁ、とは思いました。こういうものなのかも。

なお、中間テンソルを使いこなしている人が少しだけいました。 自分の予想では「ベクトル演算やパイプラインはみんな使うけれど中間テンソルは使えないかな」と思っていたので、 この結果はちょっと意外です。 中間テンソルはHalideくらいしか類似の概念が無いので、これは使えなくても仕方ないかなぁ、と思ったのですが。 これが無いと書けないものもあるので、そういうものは必要があれば使うという事なのかも。

この辺の、あまり使われなかったが便利な機能やMFGっぽいオシャレな書き方についてはそのうち紹介ブログなども書きたいなぁ。

コンテスト、大成功でめでたい

小さい会社が自分たちで言語作って学生むけのコンテストを自分たちでやってみて、 それでこれだけ成功したならもう大成功と言っていいでしょう。凄い、びっくり。

初めての試みなので手探りでやっていた部分も多く、至らなかった部分もあったかと思いますが、 それでもこれだけたくさんの力作が並んだのは嬉しい限りです。むしろ選ぶのに苦労しました。

皆様たくさんの応募、本当にありがとうございました。

宇河先生や描乃EMOさんも審査、ありがとうございました。 自分も1審査員として全部のフィルタを見ましたが、全部見るの、結構大変なんですよ、本当。