HackMD
  • Beta
    Beta  Get a sneak peek of HackMD’s new design
    Turn on the feature preview and give us feedback.
    Go → Got it
      • Create new note
      • Create a note from template
    • Beta  Get a sneak peek of HackMD’s new design
      Beta  Get a sneak peek of HackMD’s new design
      Turn on the feature preview and give us feedback.
      Go → Got it
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Please check the box to agree to the Community Guidelines.
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Save as template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive Export to Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive Import from Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
    Menu Sharing Create Help
    Create Create new note Create a note from template
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Export to Google Drive Gist
    Import
    Dropbox Google Drive Import from Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    Write
    Only me
    • Only me
    • Signed-in users
    • Everyone
    Only me Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Please check the box to agree to the Community Guidelines.
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note      
    Published Linked with GitHub
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # 第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/)に参加してもらったり、オンライン参加をしてもらってどういう集まりか知ってもらえればと思います。 来年もみなさんのご発表・ご参加をお待ちしています!

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.


    Upgrade

    All
    • All
    • Team
    No template found.

    Create custom template


    Upgrade

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Tutorials

    Book Mode Tutorial

    Slide Mode Tutorial

    YAML Metadata

    Contacts

    Facebook

    Twitter

    Feedback

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings
    Upgrade now

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Available push count

        Upgrade

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Upgrade

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully