# 第55回情報科学若手の会{に参加,で発表,を運営}しました ![交流イベントでチーム1が提出した画像(prompt: "a brown cat with surprised face on the left, looking into left side, galaxy background")](https://i.imgur.com/WykLFEG.png) <small>交流イベントでチーム1が提出した画像(プロンプト: a brown cat with surprised face on the left, looking into left side, galaxy background)</small> 自分のブログの生成に使っていた自作の静的サイトジェネレータをひさしぶりに動かそうとしたところ、Apple silicon上でビルドを上手くできなかったり使い方を完全に忘れたので、とりあえずこちらに書こうと思います。 ## 感想 今回は51回ぶりの現地開催の若手の会だったので(そして自分が代表幹事として迎えるはじめての現地開催!)ここ数年のオンラインオンリーと違って準備するべきことが沢山あったり、会直前に色々な対応に追われることがあって準備が中々に忙しかったです。他の幹事の皆様、何かとサポートしていただき本当に感謝しています... 自分は現在香港に住んでいるので、会の一週間前に日本入りをして会の開催準備や自分の発表の準備に取り組んでいました。そして、会の前日に[kuge_masa](https://twitter.com/kuge_masa)さんと[kyontan](https://twitter.com/sukukyon)さんと合流して、肉を食べ、温泉を楽しみ、各種準備をやり、当日へ。 1日目の発表は情報教育・量子インスパイアな組合せ最適化・ruiさんによるOSSをやっていくことについての招待公演、といったお話がありました。初日の時点でかなり多様なトピックでかなり楽しかったです。特に情報を教えるのをどうやってやっていくかを現実的に考えていくのは自分も関心があるものの教育者の立場の話を聞くことはなかったのでかなり勉強になりましたし、ruiさんによるオープンソースをビジネスとしてやっていく上でどう考えているか、みたいな話もかなりためになった気がします。発表の後は夕食と交流イベントをやりました(交流イベントに関しては後述)。 2日目は非公開セッション(現地開催の醍醐味!)、そして型システムの応用・計算クラスタの運用・広告のユーザー体験に関する巨大論文サーベイ・竹迫さんによるインダストリーR&Dをやっていくことについての招待公演・等々の発表がありました。自分としては理論を応用して上手くやっていく、みたいなテーマと論文サーベイでstate of the industryを俯瞰する、みたいな発表が好みだったのでこの日も収穫がとても多かったです。この日は発表とLTをそれぞれ一つずつやったので、準備も大変でかなり緊張しましたが、予想よりうまくできたのでかなりホッとしました:blush:。夜はナイトセッションということでお土産のお酒をみんなで飲んだり、ボードゲームをやったり、久しぶりに会う友人知人と語り明かしたりすることができてかなり充実した1日でした。 翌日はみんなで荷物をまとめて解散し駅へ行き、モカソフトを同行者一同で食べ、友人とちょっとした観光をし、帰路に着きました。 ## 発表 自分が所属している会社が取り組んでいること/仕事でやっていること(高パフォーマンス・低レイテンシシステムの開発)と自分の趣味(OCaml)が交差するテーマでお話をしました。スライド等の公開は残念ながらありませんが、興味があれば是非ご連絡ください、お話しできると思います。 上手く質問などに答えられるか不安がありましたが、結構色々な質問が飛んできても難なく答えられる程度には身についていることにホッとする自分がありました。一方、今回話した内容のほとんどは先人の積み上げてきた技術や知見だったので、次は自分が取り組んだことについて話せるようにやっていきたいと思います。 ## 交流イベントを支える技術 <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">おれはなぜ「クラシックなキーボードが90年代のコンピュータの画面を突き破っている画像」をStableDiffusionで生成するためのクエリを見つける競技に参加しているんだ?(情報科学若手の会の交流会オンライン参加)</p>&mdash; 画力・博士号・油田 (@bd_gfngfn) <a href="https://twitter.com/bd_gfngfn/status/1573267583956324352?ref_src=twsrc%5Etfw">September 23, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 情報科学若手の会では、毎年アイスブレイク目的も兼ねて交流イベントを開催します。今回ははじめてのハイブリッド開催ということで、可能であればオンラインの人で参加したい人も参加可能な感じにしたいね〜!という話があり、Stable Diffusionが話題になった頃にこれだとなり画像生成モデルを使ったゲームをすることにしました。 ルールは次のようなものでした: - 参加者はチームに分かれてDiscordのプライベートチャンネルに参加する(Discordは参加者同士の交流用に用意していました) - 以下を1ラウンドとし、繰り返す - お題画像が提示される - チーム内のプライベートチャットでプロンプトを特定の文法で投げると、DiscordボットがStable Diffusionにそれを流し込み、生成した画像を返信する - 制限時間内に可能な限りお題に近いような画像をチーム内で何度も生成し、最も良いとされる画像を提出 - 制限時間が過ぎたのち、10個程の採点基準のYes/No質問が開示され、提出画像に基準に当てはまる項目ごとに1点を取得 おかげさまでかなり盛り上がり、面白い画像も沢山生成されました。参加者のみなさん、準備・運営を回してくれた幹事のみなさん、ルール考案を手伝ってくれたbe_Paprikaさん、ボットで遊んでフィードバックをくれたロ技研同期のみなさん、ありがとうございました。 自分はこれに向けて上記Discordボット開発とイベント中のサービスの死活監視を担当していたので、それらについてちょっと紹介します。 Stable Diffusionはそこそこ重いモデルで、たとえばRTX 3080みたいなそこそこ良いGPUを使っても1/4-1/3ほどメモリを食いつつ一回推論するのに数秒ほどかかります。それを比較的多数の参加者が同時に沢山クエリを投げてくることを考えると、明らかに1台のGPUつきAWSインスタンスではsub-1リクエスト/sしか捌けず、力不足です。かといって、Stable Diffusionをまともに回せるレベルのGPUインスタンスとなると1つ当たり1時間数千円掛かってしまい、とても予算的に現実的ではありません。 そこで、今回は[vast.ai](https://vast.ai/)という個人のGPU貸出とレンタルをしたい人をマッチングするプラットフォームを利用して運用コストを押し下げつつ、システムをサーバー・ワーカー構成にすることによって柔軟にロードに応じてワーカーインスタンスを減らしたり増やしたりできるようにしてみました。イベント中は主にクエリの増え方に応じてバンバンインスタンスを手動で立ち上げてロードに合わせてスケールをしつつ、サーバーがバグったり落ちたりしないことをログを見ながら祈る、みたいなことをしていました。 ワーカーの設計上メモリが許す限りGPU当たりワーカーを複数立ち上げて並列にクエリを処理できることに途中で気付いたこともあり、制限時間が減ってきた時の怒涛のリクエストも(1回のトラブルを除いて:innocent:)無事捌くことができました。 vast.aiはUIが結構未熟な感じがした一方、APIやCLIが一応あり、中々便利でした。ingress/egressにも一応料金が掛かるみたいで、データインテンシブな機械学習タスクには少し使いにくそうな感じがしますが、こういうマッチするタスクに関してはかなり安く使えるのでオススメです。 [サーバー・ワーカー共にソースをこちらに公開](https://github.com/wakate/stable-diffusion-bot)したので、興味があれば是非遊んでみてください。 ## 最後に 後日知人に若手の会の話をした際に「パッとみた感じだとどういう人が参加することを想定している会なのかよくわからなくて、二泊三日だから参加のハードルが高く感じた」という指摘をされました。実際いきなり現地参加は結構ハードルが高いとは思いますが、そういう方には冬に例年やっている短縮版の[情報科学若手の会 冬の陣](https://wakate.connpass.com/event/113980/)に参加してもらったり、オンライン参加をしてもらってどういう集まりか知ってもらえればと思います。 来年もみなさんのご発表・ご参加をお待ちしています!