2023年研究開発振り返り

12月半ばに長らく取り組んでいた論文を投稿して気が抜けたのか、年末年始は呆けて過ごしている。気がついたら4日なってもまだ振り返りを書けていなかった。2023年は2022年と比べて自身の変化が少なく、振り返るためのやる気がでなかったのかもしれない。やる気がない筆をとりつつ振り返っていく。

2023年振り返り

研究開発

博士号はとれなかった。研究開発については昨年から引き続き1年中同じテーマの論文を書くための実験と執筆を繰り返し続けるだけだった。想像していたより難しいテーマに取り組んでいたことがあとからわかってきて、仮説を立てて実験してはよい結果がでない。そもそも評価指標がなかなか確立せず、なにがよくてなにが悪いのか暗中模索を続けていた。なんとか今年中にまとめきって、国際ジャーナルに論文を投稿できたのはよかった。この記事を書いてる途中で、投稿論文について「今のままだと一人のレビュアーがreject判定だから再投稿したら再度レビューするよ」といったメールが返ってきたため、原稿を修正する必要がでてきて慌てている。論文の本文はまだ公開していないが、コードとデータセットはGitHubに公開している。

GitHub - ai4sre/metricsifter: Feature reduction of multivariate time series data for fault localization in Python

以下は、2023年の主要な出来事を羅列する。

昨年の3月に博士課程は3年の標準年限を終えて、研究指導認定退学した。大学の福利厚生は使えなくなったが、研究室のSlackワークスペースにはフルメンバーでアカウントを残していただいている。

4月は毎朝論文を読む活動をやっていた。これのおかげで、研究の突破口もみえたのでやってよかった。本当は長期的に続けたほうがいいのだけど、短期的報酬系に脳が最適化されてしまって、途中でやめてしまった。

5月末ごろに今投稿中の論文で提案するアルゴリズムを思いついて、それまでのアルゴリズムを全て捨てた。それから9月までそのアルゴリズムの評価実験を続けていた。

9月には、SRE NEXT 2023で3年ぶりに現地でプレゼンテーションした。今回は、自分の成果を発表するのではなく、会場のエンジニアに対して論文を読もうよと呼び込むスタイルを選択した。

7-12月は論文執筆の季節になった。アルゴリズムの良さをどのように評価するかにはずいぶん頭を悩ませた。過去書いたシステム系の論文のように単にスループットやレイテンシ、リソース利用率といったよく知られた指標が良いことを示すだけなら単に手間の問題だった。今回のアルゴリズムは、end2endのタスクではなく、パイプラインのなかの一つのタスクを提案するものであり、定番の評価指標はない。また、そのタスクだけ評価してもパイプライン全体として良いのか疑問が残るため、パイプライン全体としても評価しなければならない。英語については、OpenAI Assistants APIやPaperPal、DeepL、DeepL WriteなどのAIツールを使い込んだ。

12月には、前述のように論文を投稿すべく追い込みをかけていた。また、はてなに新卒?入社して10年経過した。はてなを退職して5年になる。さくらインターネットに入社してほぼ5年だ。副業先のTopotalが手かげているSREのプロダクト「Waroom」がファーストユーザーを獲得したのは、嬉しいニュースだった インシデントマネジメントのこれまでとこれから。Waroom開発チームと2年半ほど毎週ディスカッションさせていただいてきたので感慨深いものがある。

研究分野以外のテクノロジーの変化については、とにかくChatGPTをはじめとする生成AIの台頭が凄まじかった。ChatGPTやGitHub Copilot、英語翻訳・校正系ツールがないと仕事ができくなくなっている。コーディングでは、複数のファイルにまたぐソフトウェアプロジェクトのコードはGitHub Copilot、書き捨てスクリプトやデータサイエンス系ライブラリやLaTexの込み入った使い方、データの可視化方法などについてはChatGPTに出力させている。その他、ぐぐってもでてこないようなタスク、例えば、自分が書く論文のタイトル候補をだしてもらうとか、議論した内容の整理や発散をChatGPTに投げまくっている。

プロダクト設計や研究プロジェクトの展望についても生成AIは大きな影響を与えた。副業先のTopotalでも生成AIを前提とするプロダクト設計について頻繁に議論させてもらっている。一昨年のDICOMO2022の招待講演で発表した展望がずいぶん早くに実現されようとしている。 AI時代に向けたクラウドにおける信頼性エンジニアリングの未来構想 / DICOMO2022 6A-1 - Speaker Deck

京都で一人で日本ではほとんど取り組まれていない分野で研究開発とかやってるせいか、だんだん気も狂ってきて、再魔術化された世界のSREとか言い始める。異世界系エンタメの観すぎのように思われそうだが、社会学では再魔術化は用語になっている https://www.amazon.co.jp/dp/4163910212

人生観の変化

2023年のChatGPTをはじめとする生成AIの台頭は凄まじかった。現時点でのAI製品は便利なツールに留まるが、来年にはAIエージェントが自身で試行錯誤したり、ユーザー個々人のコンテキストの収集が自動化されていく展望が噂されている。この調子で技術が進化していくと、数年以内には自分の知力を上回るのではないかと恐れるようになった。昨年の4月に研究所内でAIの台頭に関する所感を共有していた。 最近の生成AIの興隆に対する危機感と好奇心についての思索メモ (4/4/2023) · GitHub

自分はこれまで、自身の知力を向上させ、その知力に基づいてなんらかの成果を得ることに人生の時間の大部分を注ぎ込んできた、といってもよい。しかし、知力に基づく生産性を最重視していてよい時代ではなくなってきていると感じている。そのため、「人間」という文字の意味に沿って、人とのネットワークが以前よりも重要になってきたり、成果の多寡よりも好奇心の満足を目指すこと、つまり、「楽しい」や「おもしろい」を重視することが大事になってくる気がしている。最終的には近所でのんびりコーヒー屋でもやってるかもしれない。

さすがに数年ぐらいでソフトウェアエンジニアリングに関して自分ができる仕事がゼロになるとは思えないし、研究テーマのAIOpsに対して、今年のLLMの進化はそれほど大きな影響を今のところ与えていない。しかし、なんとなく描いていた将来予測を大幅に修正することになった。

2024年抱負

なんといっても博士号をとらないとどうにもならない。博士論文のための材料は揃ったので、あとはまとめていくだけのはず。

研究所の仕事としては、博士課程で独りで到達できる成果の限界を強く感じたため、研究プロジェクトチームを組織したい。そのため、今年の後半には、研究所で研究員と研究開発エンジニアを募集できるような状態にもっていきたい。今年はまだ時期尚早だが、事業化も考えていきたい。また、会社に閉じず、オープンコミュニティと連携し、自分の研究を広げていきたい。

年末の沖縄での研究所合宿では、次のようなスライド(一部抜粋)を作って展望を共有していた。

YAPC::Kyotoに参加してきた - 自分の原点を思い出すカンファレンス

3/19(日)開催のYAPC::Kyoto 2023にオフラインで参加してきた。最後にYAPCに参加したのはYAPC::Asia 2015なので、8年ぶりのYAPCだった。自分が登壇しないテックカンファレンスにオフライン参加すること自体がこれまでにほとんどなく、カンファレンスの醍醐味の一つである人とのネットワーキングにはじめて集中できたかもしれない。特に、京都開催ということもあり、前職のはてなの関係者の方々がex含めて多数参加されていたので、終始はてな同窓会気分だった。自分は相変わらず京都に住んでいるので、近場でカンファレンスに参加できてありがたかった。

印象に残ったトーク

廊下やブースで話してばかりで、あまり集中して聴けたトークが少なかったのだけれど、YAPCらしい、フロントからインフラまでWebアプリケーション開発に関する伝統的な技術スタックの話と、ハッカーコミュニティの歴史が感じられる独特の雰囲気のあるよいトークが多かったように思う。

ジョブキューシステムFireworqのアーキテクチャ設計と運用時のベストプラクティス @tarao

ジョブキューシステムFireworqのアーキテクチャ設計と運用時のベストプラクティス - Speaker Deck

KRPで周辺で迷っていたら、なんとトーク終了にも間に合わなかった...。

Fireworqの初期設計者の一人としては、はてなの開発合宿での開発開始から8年以上経過して実運用実績も積んで陽の目をみていることを嬉しい。Fireworqのアーキテクチャ設計の検討記録をブログに残していて、おそらく参照してもらっていたと思うので、当時書き残しておいてよかった。GoとMySQLを用いたジョブキューシステムを作るときに考えたこと - ゆううきブログ

トーク後でtaraoさんに聞いたところ、ジョブの特性に応じて複数のキューを使い分ける機能は、はてなブックマークで実際に使われているとのことだった。当時少しオーバースペックかなと思っていた機能がちゃんと意味があって実用されていてよかった。

qron: Cloud Native Cron Alternativeの今 @aereal

qron: Cloud Native Cron Alternativeの今 - Speaker Deck

ジョブの登録・呼び出しインターフェイスとジョブスケジューリング機構をStep FunctionsとDynamoDB、Exactly onceのイベント発火をCloudWatch Events、が担う、サーバーレスアーキテクチャで定期ジョブスケジューラーだと理解した。

前述のFireworqやaerealさんが以前担当されていたはてなブログの常時HTTPS配信アーキテクチャが背景として透けてみえる非常に”らしい”話だったと思う。

以前サーバーレスアーキテクチャでデータ指向アプリケーションを組む取り組みをしていたこともあり、こういう話はとても好き。時系列データベースという概念をクラウドの技で再構築する

あの日ハッカーに憧れた自分が、「ハッカーの呪縛」から解き放たれるまで @ar_tama

あの日ハッカーに憧れた自分が、「ハッカーの呪縛」から解き放たれるまで - Speaker Deck

廊下での話で盛り上がってしまったため、直接の聴講はかなわなかったけど、スライドを拝見して、学生のころにハッカーに憧れた気持ちを思い出した。ハッカーの特徴を抽出し、解釈し直して、今もハッカーで居続けるにはとリフレーミングされている内容だと理解した。参加者の多くの方の共感をよぶとてもよい発表だと思った。

コードを高速に書いてみんなに使われるソフトウェアを爆速で生み出すいかにもハッカーらしい貢献は、どうも自分には難しいと思いながらも、エンジニアリングを突き詰めたくて、「コード」よりも「知」の世界で貢献しようと思い、さらに「ブログ」から「論文」を書くようになったのだった。*1

ar_tamaさんは以前からウェブ上で存じ上げていたのだけど、偶然はじめて挨拶できた。ご本人に聞くところによると、今回の発表では、スライドの書き出しがなかなか難しく、ChatGPTと対話しながらスライドを作成されたとのことで、自分も同等の使い方を試してみようかなと思った。

@nekokakさんのゲストトーク

トークの序盤で00年代にPerlハッカーへの憧れからPerlの世界に入られた経緯を語られていて、その背中を、さらに自分のような10年代世代が見てきたコミュニティの歴史の連鎖を感じた。nekokakさんのPerlのO/RマッパーであるTengには10年前にお世話になり、リスペクトでCotengというCPANモジュールを作っていたことを唐突に思い出した。とにかくややこしいことをしない ORM がほしくて Coteng とかいうCPANモジュールを作った - ゆううきブログ

YAPC::Kyoto 2023 Keynote @onishi

YAPC::Kyoto 2023 Keynote - Speaker Deck

onishiさんによる、はてなとPerlとPerlコミュニティを振り返る話。はてなインターンとアルバイトを経由して、新卒ではてなに入社した身としては、感情の昂りを抑えることが難しい感動的なトークだった。はてなの全サービスのインフラとMackerelを中心に、自分のできる限りを尽くしてはてなに貢献できるように頑張っていたころを思い出した。

自分がこの世界に入ったのは、はてなインターンだけがきっかけで、転職したからこそわかるのだけど、はてなではアルバイトを含めて6年の勤務だけだったとは思えない濃密な経験をさせてもらって、onishiさんが育ててこられた土台の上で、今もやれているのだなと改めて感謝したい。

忘れていたエンジニアを志したあのころ

ここ数年はアカデミアで研究者として活動していたこともあり、エンジニアを志していたころのことはすっかり忘れてしまっていた。Perlは7年ぐらい書いてないし、その前でもCPANモジュールをいくつか公開したり、YAPC::Asiaに2回登壇したくらいで、Perlコミュニティへの貢献はほとんどなにもしていない。そのため、Perlコミュニティに関する思い出はそれほど多くないのだけど、新卒のころの就職活動では、Perlの会社を中心に探していたし、YAPC::Kyotoで参照されていたPerlハッカーの名前は、面識のある方こそ少ないけど、わからない名前はほとんどなかった。

カンファレンス中には、ハッカー同士で最近の互いのGitHubのPRについて議論されていたり、PRではやり取りしてたけどカンファレンスではじめて邂逅していた若者たちがいたり、ああそういえばこういう空気感だったな、今はすこし遠いところに来たかもなと感慨深くなった。*2

Perlのコミュニティやはてなのカルチャーに影響を強く受けて憧れていた自分の原点を久しぶりに思い出し、その原点と今とのつながりも再確認できたので、またこれから頑張ろうと思う。

*1:OSSによる貢献もまだ諦めてないので、博士号を取り終えたらなんとか...

*2:アカデミアの研究会にも類似の空気感はあるのだけど、同分野で自分と近い世代の研究者がコミュニティにはほとんどいない。

2022年の研究と生活の振り返り

今年は特になにかあるわけでもないけど、どことなく落ち着かない年末を過ごしている。8年間通っている近所の食堂の餅つき会に呼んでいただいて、幼少のころ以来久しぶりに、餅をつかせていただいたりした。今年は、華々しい出来事はなく、アトリエにこもってSFを読みつつ未来の妄想をしながら研究の試行錯誤を続ける一方で、地に足をつけて生活している実感を得ようとした1年だった。

研究に関わる活動

昨年の振り返り によると、2022年は次の4点を目標にしていた。

  1. 博士論文の審査のための条件が最後1つ残っているので、その研究を完遂させる
  2. 統計・機械学習の基礎の勉強
  3. 手を動かしたからこそわかる現実の観察を踏まえた問題
  4. 複数の関連するコンテキストをうまく繋ぎ合わせて、相乗効果を重ねて、自分の成果につなげていく

1.は残念ながら未達。2.は少なくとも自分が取り組んでいる範囲ではそれなりにできたと思う。3.も想像以上に先行研究の結果を再現できないことを発覚させたことで、できているとはいえる。4.は行動変容があったものの自分の成果にまでは繋げられていない。

1.は2023年に持ち越し、4.は諦めてはいないものの今の環境の延長線上では難しいかなと思い始めている。

AIOps

さくらインターネット研究所で引き続き、AIOpsの研究に注力している。今年1年は、統計と機械学習を学び、自分で手を動かして、数理モデルを作り、評価することにひたすら注力していた。時系列データの異常検知、時系列クラスタリング、統計的因果探索、ネットワーク解析、深層学習(CNN)など必要な知識は多岐にわたる。定番のデータセットや評価指標がない領域に手をだしてしまった感があり、手法を実験で評価することに随分苦戦している。先行研究の結果が、手元のデータセットでは再現できないことが何度かあり、データ駆動のソフトウェアの汎化能力を保証する難しさを思い知ることとなった。また、AIOpsの障害管理の領域では、なにが正しい、あるいは何が望ましい状態のかを原理から演繹することが難しく、個々の現場のデータから帰納的にその状態を導くしかない。壁にあたっては少し前に進んでまた次の壁がでてくるの繰り返しで、論文も書けてないし、全然順調とは言えないんだけど、これはこれで研究らしい。 一方で、新規に獲得した知識の年間総量はこれまでで最多かもしれない。

5月に国内唯一のSREのカンファレンス SRE NEXT2022 で、途中成果のまとめをソフトウェアエンジニア向けに講演した。組織へのSRE適用事例をテーマとする講演が多い中で、少なくとも国内ではあまり見かけない領域でテクニカルな話ができたことは、国内ではレアな立ち位置であるSREの研究者としては良かったと思う。

研究コンセプトの更新 IPSJ-ONE2017での高度に発達したシステムの異常は神の怒りと見分けがつかない 以来、自分の研究コンセプトを更新できていなかった。そこで、情報処理学会の11研究会による主催のDICOMO 2022の招待講演に呼んでいたことをきっかけに、研究コンセプトを大幅に改訂した。この発表では、近未来のAI前提の情報社会に向けて、SREがどのようにあるべきかを1940年代から現在までを簡単に整理し、2040年代までの道筋を構想した。今ある技術ありきの未来予測ではなく、フィクションとして”こうなったらおもしろい”を提示している。そして、フィクションを現実にしていくための最初のフェーズのコンセプト”Interactive AIOps”を考えた。

この発表の後に、Stable Diffusion、ChatGPTなどの発展的なAIが登場し、AIをとりまく状況が大幅に変化した。人間は、これらのAIに対して、呪文と呼ばれるAIへの命令文を用いたAIとの対話を通して、もとめる成果物を製作したり、知識を獲得する。自分の構想では、いわゆる生成系AIを想定しているわけではないが、人間とAIの対話的な関係性は、自分のコンセプトを育てる上で大きなヒントになりえる。

2度の講演のおかげか、AIOps関連でこれまで繋がりのなかった大学の研究室や企業の新規開発事業部との相談、登壇・執筆・査読のご依頼などをご連絡いただけるようになった。いくつかのお話は多忙を理由にお断りさせていただいたものの、お話をいただけることはありがたいことだと思う。

博士課程

博士課程は3年目に入り、標準年限が過ぎ去ろうとしている。3本目の研究の進捗が思わしくないため、標準年限で修了することは諦めた。単位取得退学したあとに、博士論文の審査を受ける予定にしている。博士課程修了を優先するなら、AIOpsには手をださずに、時系列DBやネットワーク依存関係のトレースなどのシステムの観測技術に関する続きの研究をするべきだった。そうすれば今ごと予備審査を終えていたかその準備をしている頃合いだったと思う。しかし、強くやりたいと思えるネタもなかったので、今の所後悔はしていない。

プロダクティビティ

秋のはじめごろに、モデルをこねくり回していたずらに時間が過ぎてしまう感覚があった。そこで、プロジェクトを引き締めるために、アジャイル開発の手法を取り入れた。論文を投稿するまでのタスクを洗い出し、見積もりポイントを付与し、毎週ベロシティを計算し、現在地を明確にした。

昨年から愛用しているノートアプリのObsidianでは、2763ノートまで成長した。本来なら、ノート間のリンクを継続的につないで、ノートを孤立しないように維持することが望ましいのだけど、最近はその作業が滞っている。その結果、孤立ノートが目立つようになってしまった。

メンタリングとチームビルディング

さくらインターネット研究所で上級研究員に昇格し、研究所メンバーのメンタリングを担当することになった。前職のはてなでは、シニアエンジニアとしてメンターを務めていたので、はじめてのことではない。数年ぶりにチームビルディングのことを考えてはいるものの、現在の研究所では、各メンバーのキャリアやメンバーが取り組んでいるテーマ間に距離が大きすぎて、一つのチームとしてまとめることが難しくも感じている。そんななかでの試行錯誤や思考の途中結果を研究所のブログにまとめて次のように公開した。

ここ数年で、人との良い関係性は共感(Empathy)から始まるものだとだんだん考えるようになった。共感を示すには人の心に寄り添う必要があり、寄り添える人間でありたいと思うようになった。寄り添うとはいっても同情(Sympathy)することは類似の経験をしていないとなかなか難しいこともある。一方で、共感、つまり相手に理解を示すには、なぜ相手がそのように感じるかのプロセスを理解することであり、これは論文を書くときに必要な客観的思考と似ているようにも思う。以前は、めんどくさいからさっさとこうやって解決すればいいじゃんと共感のプロセスを省略する傾向が今よりも強かった。

このような心持ちの変化が原因であるかはわからないけど、何人かの同僚に話をしやすいと言ってもらえ、相談を受けることが増えてきたのはうれしい。

副業

昨年に続いて、Topotal でテクノロジアドバイザーをさせていただいている。昨年と変わらず、インシデントレスポンスのSaaSのWaroomをリリースするにあたって、プロダクトをどのように育てていくかを一緒に議論させていただくのが主なお仕事となった。前職のはてなでのサーバ監視SaaS Mackerel もまさにSREに直結するSaaSであり、Mackerel開発の初期のころをよく思い出す。その他、僕自身の研究の進捗があったり、インシデントレスポンスに関するおもしろい論文や文献があれば、雑談程度に共有させてもらったりしている。SREについて定期的に話せる場が他にあまりないので、貴重な機会になっている。

研究以外の生活

今年の前半は、実家の相続でトラブルがあり、諸事情で、両親とともに何人かの弁護士に相談に行ったり、両親の代わりに、文章を作成していたりしていた。5月ごろには一旦落ち着いてよかったが、客観的な会話ができない弁護士とやりとりしたり、まともに話が通じない親戚がいたりと、普段とかけはなれた状況に遭遇して、頭を抱えることも多かった。10代のころからこつこつ磨いてきた説明的な文章作成のスキルを両親に還元できたので、それはよかったと思う。

他にも感情の整理をつけないといけないことがあったりして、暮らしの価値観をすこし更新することになった。価値観の更新の影響もあって、今年の後半は、生活に変化を加えるように心がけた。

前からできるようになっておきたかった料理をはじめた。何年か前にもやろうとして、適当に作るとそんなに美味しくなかったりしたので継続に失敗した。最近は動画で細かく工程を教えてくれるので、真似すれば簡単でそれなりに美味しくなるので便利。足りない道具はすぐに買い足すようにして、調理工程や食材管理を改善していくとモチベーションを維持しやすいことに気づいた。パスタが好きで作るのが手軽なこともあってよく作っている。年末は年越し蕎麦を作って食べた。時間は使うけど、買い出しをして、食材を管理して、調理して、片付けをしてとやっていると生活をしている実感を持てるようになった。友人に作った料理の写真をみせては、一緒に喜んでもらっていた。

8年間通っている近所のお店のスタッフさんが今年独立され、おべんとう屋さんをはじめられたことがきっかけで、どちらのお店のスタッフさんともよく話をさせていただくようになった。スタッフさん同士で互いを愛称で呼び合われているのが印象的で、どことなく前職のはてなの文化を連想させる。知人・友人の多くが他県に住んでいる中で、一人暮らしのリモートワークは孤独を感じることもあり、ご近所付き合いをさせていただいていけるのはありがたいことだと思っている。どちらのお店も、居心地がよく料理がとてもおいしいので、京都に来られた際には、ぜひランチに行ってみてほしい。

2022年の研究成果リスト

今年の研究業績はあまりあがってない。というか主著論文を1本も書いていないことに気づいた。

論文誌論文

  1. Yuuki Tsubouchi, Masayoshi Furukawa, Ryosuke Matsumoto, Low Overhead TCP/UDP Socket-based Tracing for Discovering Network Services Dependencies, Journal of Information Processing, Vol.30, pp.260-268, 2022. [paper] [code].

国内会議録(査読付き)

  1. 林友佳, 松原克弥, 鷲北賢, 坪内佑樹,(ポスター)Situation Awarenessと認知心理学にもとづいたマイクロサービス型システム向け監視ダッシュボードの設計, インターネットと運用技術シンポジウム論文集, 2021, 97-98 (2021-11-18), 2021年12月.

国内会議録(査読なし)

  1. 林友佳, 松原克弥, 鷲北賢, 坪内佑樹, マイクロサービス型システムの監視におけるダッシュボードUI設計に起因する状況認識への影響, No.2022-IOT-56, Vol.38, pp.1-8, 2022年3月. [発表資料]

国内講演・講義

  1. 坪内佑樹, 鶴田博文, (招待講演) AI時代に向けたクラウドにおける信頼性エンジニアリングの未来構想, マルチメディア、分散、協調とモバイル(DICOMO2022)シンポジウム, 2022年7月14日 [予稿]
  2. 坪内佑樹, AIOps研究録―SREのためのシステム障害の自動原因診断, SRE NEXT 2022 ONLINE, 2022年5月15日 [動画]

Podcast

  1. yuuki, 18: AIOps with yuuki, e34.fm, 2022年5月

これまでの振り返り記事

年末の振り返りをはじめて10年経った。ソフトウェアエンジニアリングにしか興味がなかった時期は過ぎ去り、ついに生活に目を向けるようになってきている。

2023年の抱負

来年は、なんといっても博士号を取得したい。これが達成されれば、2023年は悪くない年になると思う。

これまでは、現実にありそうな一つ問題を発見してそれを解くことだけに取り組んできたが、ワンアイディアで終わってしまってそれ以降の研究につなげにくい問題を抱えていた。博士号取得後は、実運用上のデータ収集と課題を発見し、その課題を既存研究では解決できないことを実証した上で、DICOMO2022で発表したより広範で深い構想へつながるようなストーリーのある研究計画を立て、実現可能な環境づくりに取り組みたい。

2023年もよろしくお願いします。

SRE NEXTで「AIOps研究録」講演を終えて

5月14-15日に開催されたSREの国内カンファレンス SRE NEXT 2022 ONLINEにて、「AIOps研究録―SREのためのシステム障害の自動原因診断」と題して、ITシステムに障害が発生した際に、機械学習・統計解析の手法を用いて、障害の原因を自動で診断するための研究について講演しました。

講演に用いたスライド資料を以下に公開しています。

当日に配信された講演動画は、Youtubeに公開されています。

なお、この記事では、AIOpsという用語を、機械学習や統計解析をはじめとするAI(人工知能)と呼ばれる技術を用いて、ITオペレーターのオペレーション作業を自動化あるいは支援する技術の総称として使っています。

なぜAIOpsに着目したのか

自分が、統計や機械学習をはじめとするAIと呼ばれる技術をSRE分野に適用することを漠然と考えはじめたのは、2017年ごろでした。当時、今後のSREの未来の展望を考える機会に恵まれ、IPSJ-ONE 2017という情報処理学会全国大会の併設イベントで5分のトークをすることがありました。その際に、現在の情報システムがあまりにも複雑化し、熟練のエンジニアでも、認知負荷の高い状況に対して、いかに立ち向かっていくか、システムの運用者はどうありたいのかを考えました。そこで、人間の理解の範疇を超えると仮定して、システムの異常を自然現象とみたてて、実験により現象を再現させて現象の理解につとめていく様を自然科学のアプローチから類推しました。 当時は、あえてAIや機械学習といった用語は登場させなかったものの、故意に異常を発生させるChaos Engineeringのアプローチに着目し、その異常のデータを教師として、学習を繰り返すようなシステムを妄想していました。

このようなシステム運用の展望を実現するために、いつかはAIを手段として活用したいという思いが5年前からありました。

講演内容について

SRE NEXT 2022は「SRE DIVERSITY」をテーマに掲げています。そこで、自分の発表では、国内でまだ認知が低いAIOpsと、ITエンジニアが主体のカンファレンスで学術研究の話をする、という2つの意味でのDIVERSITYを念頭に置きました。

そのため、AIOps全体の「木」から、自分が研究で試行錯誤している「枝」に至るような流れとなるように、「AIOpsの概観」「先行研究と我々の研究の問題設定」「統計解析を用いた試行錯誤の紹介」「AIOpsを研究することの所感」の4本立てで講演を構成しました。

「研究録」というタイトルには、研究としての提案内容や評価結果そのものではなく、研究の考え方や試行錯誤が途中であってもそれを記録し、伝えたかったという思いが込められています。

AIOpsの概観

AIOpsが担う領域を学術研究のサーベイ論文を交えて紹介します。AIOpsは大領域として、障害(Failure)の予測・予防・検知・原因分析・回復のタスクに関わる「障害管理(Failure Management)」と、コンピューティングやストレージのリソース使用の最適化に関わる「リソースプロビジョニング(Resource Provisioning)」に分けられます。発表者は、SREの信頼性に直接の影響を与えることから、障害管理に着目しています。その中で未だSREsの直感に頼りやすいタスクとして、障害対応中の原因分析が挙げられます。

先行研究と我々の研究の問題設定

運用の現場では、障害発生時にアラートストームが発生し、多数のアラート通知を認知する負荷が高い課題がありました。この課題が生まれる要因として、 症状と原因のそれぞれを同時に検知する狙いで、多数のメトリクスにアラート条件を設定しているからではないかと考えました。

そこで、2020年に思いついたアイディアは、バーンレートなどの症状の悪化を示すメトリクスに対してのみアラートを通知することにした上で、アラートを起因として、メトリクスを統計解析することにより原因を推定する、というものでした。原因を推定するには、発表者の別の研究として進めているTCP/UDP通信の依存関係のデータとメトリクス間の相関分析を組み合わせれば、疑似相関を排除しながらメトリクス間の因果関係を推論できるのではないかと考えました。

ところが、先行研究の調査を進めているうちに、このアイデアをより洗練させた手法が、CauseInferと題された論文で、症状と原因の分離を前提としたアプローチを2014年に提案していたことにも気づきました。さらに、Microscopeでは、統計的因果探索と呼ばれる分野のアプローチを採用していました。その分野では、疑似相関をいかに排除し、データから因果構造を導くかについて、研究が進んでいることを知りました。

これらの先行研究を深堀りしていくと、事前に解析に用いるメトリクスをコンポーネントごとに選ばなければならないといった制約があることに気づきました。また、先行研究によっては、全コンポーネント共通に取得可能なメトリクスのみ指定可能であるケースもあります。メトリクスを選択するための知識や手間があったり、また原因推定の結果で示せる範囲にも制約がかかるはずです。 現実にはこれらの制約を満たすことが難しいこともあるのでないかと考えました。

統計解析・機械学習を用いた試行錯誤の紹介

そこで発表者とその共同研究者らは、対象システムに関係する全メトリクスのうち直近のデータに対して、(1)時系列単位で異常を含むものを検出し、(2)異常を含む時系列群からグラフの形状が類似するものをクラスタにまとめクラスタの中から代表時系列を選択する、2段階の次元削減を提案しています。次元削減後の時系列を用いて原因推定することにより、事前にメトリクスを選択することなく、データ量を削減した上で、原因推定が可能となります。

このアプローチでは、統計的機械学習による異常検知(ホテリング理論、近傍法、自己回帰モデル)、階層型クラスタリング、相互相関、統計的因果探索のPCアルゴリズムなどを組み合わせています。うまくいかなかった組み合わせも含めて、実験に使用しているデータもお見せしながら、手法の詳細を紹介しました。

試行錯誤の結果、講演動画を事前収録した時点では、未解決あるいはこれから検討する事項のいくつかは、この2ヶ月の間に研究が進捗し、解決できそうな手応えを感じています。

AIOpsを研究することの所感

  • データサイエンスの特定領域の知識だけでは完結しないため、学ぶことが大変
  • 恣意的なパラメータ設定なしでモデルの性能を高めることが難しい
  • 可視化しないと正しい結果を返しているかがわからない
  • 実験に使えるような実環境データが入手しづらい
  • 国内では、AIOpsに取り組んでいる人が少ないため、コミュニティで情報を共有しながらみんなで山を登ることが難しい

自分は理系の大学院に在籍しているわりに数学があまり得意ではない上に、データサイエンスの学習もしてこなかったにも関わらず、AIOpsの研究を開始できたのは、データサイエンスを専門とする共同研究者で同僚の@tsurubee3さんの力が大きいと考えています。大変感謝しています。

講演に対するフィードバック

講演終了後にツイートしたMeetyの雑談枠からカジュアル面談のご連絡をいただいたり、コミュニティ形成の話を最後にさせていただいたことから、一緒にやりたいねとお声がけいただいたりと、うれしいことに様々な反響がありました。

講演の内容については、前半の問題設定と問題の解き方の考え方までは理解できた、2014年でSLI/SLOを前提にした論文があることに驚いたといった感想をいただきました。一方で、後半のアルゴリズムの試行錯誤の話は難しかったようでした。統計や機械学習の分野の知識は、SREやクラウド、ソフトウェア工学の分野の体系とは離れているため、なかなか説明することに苦労しました。実際、講演者である自分が、2年前に聴いたとしても分からなかったでしょう。自分の説明がまだまだこなれていない、ということもありますし、長い目でみて徐々にコミュニティに知識を蓄積していければいいなと思います。

また、SRE LaungeのSlackワークスペース #topic-aiops チャンネルで、AIOpsのネタを共有していたりしています。

SRE NEXT 2022全体を通して

前回のSRE NEXT 2020の時点で、国内の先端企業では、すでにSREを理解するフェーズは超えており、現場の実践に入っている印象を持ちました。

今回のSRE NEXT 2022では、エンジニアがSREを実践することを超えて、規模や事業の種類が異なる多様な組織に対して、いかにSREを浸透させていくか、といった組織行動としてのSREに関する発表が多かったように思えます。@nari_exさんの基調講演は、まさに多様な組織に対するSRE実践のためのフレームワークを提示するようなお話でした。対照的に、@jp_miyamaさんの基調講演は、国内ではごく一部の企業を除いてあまり例のない、Shopifyでのハイパースケールの組織やシステムのなかで、個人がどう挑戦していくかを語られていました。

副業先のTopotal

昨年の8月より、副業でお仕事をさせていただいているTopotal@nari_exさんが基調講演、CTOの@rrreeeyyyくんがゲスト講演に招かれていました。大きな存在感を発揮されていたように思います。オンラインでは、他の参加者の方々と雑談する場所がなかったので、Topotalの企業ブースを拠点としてゆっくりさせていただきました。早期に参加者同士の交流用途のブースに移行されて、にぎやかで楽しかったです。

e34.fm

今回の講演をきっかけに、@deeeetくんと@rrreeeyyyによりホストされているPodcast番組のe34.fmにAIOpsトピックで出演させてもらいました。

18: AIOps with yuuki - e34.fm

@yuuk1tさんをゲストに迎えてメインのトピックとしてAIOpsについて,最近のニュースとしてRedis 7.0,AlloyDB,CloudFlare D1,eBPF for Service Mesh,「プロジェクト・ヘイル・メアリー」などについて話しました.

むすび

SRE NEXTは、初回の2020で基調講演に招いていただいたこともあり、すでに自分にとって思い出深いカンファレンスとなっています。 SRE NEXT基調講演を終えて - ゆううきブログ

前回に引き続き、今回のSRE NEXTもとても楽しめました。特にスタッフの皆さまは、当日の進行はもちろん、例えば、各講演の事前録画のチェックひとつとってみても、大変な苦労だったと思います。本当にありがとうございました。

カンファレンスで登壇し、成果や学びを世の中に提供するのももちろん大事ですが、コミュニティとしての「場」をつくっていくことは、それ以上に大事なことではないかと最近考えるようになっています。今後もSREのコミュニティとして活動されていく中で、自分もなにかお手伝いできることがもしあれば、お手伝いさせていただきたいと思っています。

2021年の研究回想

この年末は、ブログ記事をしたためながら、大阪の新オフィスで受領したM1 MacBook Proをセットアップしながら過ごしている。京都では寒波が厳しく、底冷えするような寒さがあり、天気予報で予報されている気温よりも寒く感じる。大晦日に実家に帰り、年始に祖父の家に顔を出す。

研究 ソフトウェアエンジニアから研究者に転向して3年目が終わろうとしている。2020年は論文の構成スキルが向上したことを実感したし、国内ではあるけど、いくつかの賞を受賞した。その一方で、2021年は1年目で立ち上げた研究を完成度を高めるフェーズになった。顕著な出来事はないが、地道な積み重ねをやっている堅実な年だったように思う。論文の文章を書くとかサーベイをするといった時間よりも、とにかく評価実験にかかる時間が支配的になっている。もっと素人発想力の高い野心的なテーマに取り組んだほうがいいのでは、と迷わないでもない。しかし、この記事を書きながら、今月投稿された難関国際会議の壁の記事を読み、僕は難関国際会議に挑戦しているわけではないことはさておくとして、今は玄人実行力を向上させるべく鍛錬しているのだと、自分に言い聞かせるようにした。実際、研究室のボスにも、あくまで博士課程は大学で教壇に立つためのトレーニングの場であると伝えられた覚えもある。難関国際会議を通す裏側の話を見聞きする限り、本気で難関国際会議を目指すのであれば、その道のエキスパートから指導を受けて、何度もリジェクトを経験して通すというプロセスを経ないと厳しいかなと思うようになった。

論文はObsidianの記録からするとおそらく100+本ぐらい読んでいる。読んでいるといっても、全文精読した論文はほとんどなく、下読み段階でノートに記録しているものも多い。

博士課程 博士課程の2年目に入った。中間発表で研究の途中経過をまとめた。。地味ではあるもの実績も順調に増えつつあるため、来年の秋ぐらいから博士論文の執筆に取り掛かるだろう。博士課程全体で一つのプロジェクトとして進めていくのが常道だと思うが、 思いつきのままにサブプロジェクトを進めてきているので、1本の博士論文として各サブプロジェクトを密に構成できるか多少不安になってきてはいる。

技術 今年の前半は、eBPFトレーシングのツール実装にひたすら取り組んでいた。 以前からeBPFを習得したいと思っていたので、よい機会になった。今年のうちにひさびさの大作ブログ記事としてまとめらたのはよかった。本当は研究室の来月の進捗報告がヤバいんだよなと思いながら記事を書いていたが、やっぱりブログは生の反応をもらえるのが心地よい。

eBPFとは別の文脈で、2020年よりITシステムの運用をAIでサポートするAIOpsに取り組みはじめている。AIOpsは統計や機械学習といったデータ科学の手法を扱うため、当たり前だが、データがないと話にならない。そこで、AIOps向けのデータを作成するための基盤を整えたり、その基盤そのものを論文にまとめたりした。この基盤を開発するために、Kubernetes、Argo Workflows、Prometheus/Grafana、Chaos EngineeringフレームワークのLitmusChaosなどのクラウドネイティブ技術を学ぶ必要があった。

Topotalテクノロジアドバイザー 以前からのソフトウェアエンジニア仲間であった@nari_exさんと@rrreeeyyyくんを含めた4名で創業されたスタートアップ企業Topoalに副業にお声がけいただいた。SREにおけるインシデントレスポンス(いわゆる障害対応、インシデント管理とも呼ばれる)をテーマに毎週ディスカッションを進めているのだけど、これが毎回おもしろい。2019年SRE考で挙げたSREの信頼性ピラミッドのうち、モニタリングの直上の階層にインシデントレスポンスがある。これまで僕は最下層のモニタリングか、あるいはインシデントレスポンスの一部のプロセスであるインシデントの原因の発見にばかり注力してきていて、インシデントレスポンス全体を深く掘り下げることがなかったので、SREの新しい切り口を見つけた思いがある。

プロダクティビティ 今年の4月ぐらいから、研究の成果を増すには、個人のプロダクティビティ(生産性)を向上するしかないと思い立ち、まずは生産性の計測をして現状を確認しはじめた。計測のために、ポモドーロテクニック(25分集中5分休憩を1ポモドーロ単位としてそれを繰り返す)を採用していて、1日の合計ポモドーロ数をタスクの分類ごとに記録している。この計測により、集中して研究を進められているかそうでないかが定量的に確認できるようになった。

生産性向上の一貫として、Markdown型のノートアプリObsidianを母艦として日々のノートテイキングにも工夫を凝らすようになった。以前から、調査したり考えたことなど個人の「知」の格納先にが脳のメモリだけだったことに問題意識を感じていた。それを解決するために、Notionを使っていたのだが、Notionはあるノートを構造的に記録しようと思ったときに、どの階層にどういう構造で配置するかを先に考えなければならず、さっとメモしようとするとまごついた。またSaaSである以上仕方がないのが、ローカルのエディタ操作に比べると動作が重たい。

そこでObsidianはSecond Brainを標榜していることからもわかるように、ノートをとる・探すまでの速さを脳の思考スピードにより近づけているような設計になっている。一日の研究はObsidianをまず起動してDaily noteをつけるところから始まっていて、なくてはならないツールとなった。今は1296ノートある。Obsidianの活用についてまたどこかに書きたい。

生活 研究者になった1年目は、締め切りを大量につくったり、あちこちに出張に行ったりして慌ただしかったが、コロナ禍の影響もあって年々ゆっくりするようになってきた。 SNSでの論争からも以前にもまして距離をとるようになった。「喜嶋先生の静かな世界」でいうところの静かな世界で過ごしたいと願うようになってきた。

今年は珈琲のドリップが新しい趣味になった。焙煎した豆を買ってきて、ハンドミルで挽いて、ほぼ毎日ドリップしている。このドリップの所作が自分でやるのも観るのも好きになった。夜中にポッドからドリッパーにお湯を細く注ぐ練習をなぜかしていることもある。その他、マンガは今年700+冊読んでいて、ここ数年の平均程度。だいたい異世界系を読んでいる。

時系列の振り返り

年始から春先

年末年始はほぼ毎日eBPFを勉強してはコードに落とし込んでいた。実験のために、負荷生成ツールyuuki/connperf をつくったり、実験の自動化コードを書いていたりした。

2月の途中からNotionで週間報をはじめた。週間報は5月一杯ぐらいまで続けたけど、毎週のオーバヘッドを計測するようになったら、それなりに時間を割いてしまっていたので、やめてしまった。Obsidianでノートをとるようになったという事情もある。週間報のようなものはまた復活させたいと思っている。

4月にポッドキャスト番組e34.fmeBPFをテーマに出演させてもらった。第2回と早い段階で声をかけてもらえたのはうれしかった。eBPFのコードは書いていたものの、あまり包括的に学んでいなかったので、慌てて書籍を読んだりしていた。Shure MV7 買った。ひさしぶりにrebuild

Rebuildを聴いているとhigeponさんの会でプロダクティビティの話題が流れてきたことをきっかけに、自分のプロダクティビティを見直そうと考えた。前述したように、Obsidianによるノートテイキングをはじめたり、そして何度目かのポモドーロテクニックを始めたり、スケジュールとタスク管理を工夫しはじめた

GWに自分でポッドキャストをやってみようと、あとはゲストに声をかけて収録するだけの状態まで準備したのだけど、実家でトラブルがあって気勢が削がれてしまった。実家との連絡用にディスプレイ付きのスマートスピーカーAmazon Echo Showを実家に送ってセットアップしたりしていた。なぜか、法学部のテキストを買って、民法の家族法周辺を勉強していたりしていた。特にこの知識を使うことはなかったが、法律と分散システムって相似箇所があるなと思ったりした。

5月はeBPFを活用した研究を英語のジャーナル論文にまとめながら、追加実験したりしていた。第8回WebSystemArchitecture研究会を主催して、ちょうどこの研究の内容を発表した。

6月から7月前半まで、2019年末で研究がとまっていた時系列データの次元削減の研究を再開していたところ、データをもっと増やさなければならないとなり、AIOps用データ生成基盤を開発していた。

7月後半は博士課程の中間発表の準備をしていた。ひさびさに現地での発表だった。現地でネットワークトラブルに見舞われて大慌てだった。

Topotalさんから副業のお誘いをいただいてすぐにokした。

8月は実験基盤の自分の論文と共著の論文をIOTS2021に投稿する準備に追われていた。COVID-19のワクチン接種2回目の副反応で発熱しながら論文を書いていた。熱は最大39.5ぐらいあった気がするが、さすがにそのときは寝ていた。

緊急事態宣言で近所の美味しい珈琲のお店が一時的に閉まってしまったので、自分で淹れるしかないとなり、珈琲器具一式そろえて、豆を買ってきてドリップしはじめた。

秋から年末

論文を投稿し終えると、5月に投稿した論文の査読コメントに対応した。無事採録されて、実際に本腰をいれて回答するのは1個の条件だけだった。

その後は、2週間休みをいれた。テイルズオブアライズが発売されたので、クリアした。休み後は、査読が溜まっていて1週間査読だけをやっていた。

IOTS2021の査読スコアは共著論文をあわせてとてもよかった。国内のシンポジウムのスコアで喜んでいても仕方ないかもしれないが、よかったものはよかった。

10月から生産性の計測値が目に見えて低調になった。この低調は12月の中頃まで続く。今年の頭から夏まであまり休まなかったので、バーンアウトしてしまったのかもしれない。

データ科学の実験の記録管理を効率化するために、MLOpsのSaaSであるNeptune.aiWandbを試して導入した。データ科学をあまり勉強せずに、Pandasの操作や実験管理を勉強していた。

11月末にIOTS2021の発表をした。この発表でもスライドが移動しないトラブルに見舞われた。今年は3年連続の論文優秀賞の受賞を逃してしまった。

12月の頭にさくらインターネット研究所での合宿に参加した。合宿は福岡のオフィスで開催された。Interactive AIOpsと呼んでいる新しいITシステムの運用コンセプトを発表した。その他、オンラインホワイトボードサービスのMiroを試験導入して、振り返りなどをやってみた。

ちょうど研究所合宿で、みんなでビジョンの話をしていたので、未来は予測するものではなく創造するものである ――考える自由を取り戻すための〈SF思考〉を読んで、マイSFブームが来た。研究所でみんなが鑑賞したSF作品テーブルをつくって共有して楽しんでいた。

Topotalさんのオフィスへ出張させてもらった。一昨年のIOTS2019やSRE NEXTぶりだねと話していた。3時まで飲む体験とか本当にひさびさだった。2軒目を1時間ででるぞと宣言して、1時間たってもまるで店をでる気配がなかったのはおもしろかった。Topotalさんのオフィスでは、サービス開発をやっている空気感をひさびさに肌で感じた。

コロナ禍が落ち着いたタイミングで、前職の同僚を含めたソフトウェアエンジニア仲間にと何回か飲み会をやった。声をかけてもらえるのは素直にうれしい。

年末は、滑り込みでブログを書くことに成功した。今年は週報以外は全然書いてなかった。

2022年の展望

まずは博士論文の審査のための条件が最後1つ残っているので、その研究を完遂させる。できれば、クラウド系の国際会議にだしたい。

5年前のビジョンにしたがって、AIOpsの研究をどんどん進めていきたいのだけど、データの作成に手をとられて、データ科学の基礎の勉強があまり進んでいない。既存のAIOps手法をいろいろ実装してみて、手を動かしたからこそわかる現実の観察を踏まえた問題を発見していきたい。

博士号を取得したあとにどうするかもぼちぼち考えつつある。具体的にこれというものはまだない。

もともと前職では、会社の様々なプロジェクト、同僚やエンジニアの友人など、複数の関連するコンテキストをうまく繋ぎ合わせて、相乗効果を重ねて、自分の成果につなげていくことが得意だったことを最近思い出している。

2021年の研究成果リスト

論文誌

  1. Yuuki Tsubouchi, Masayoshi Furukawa, Ryosuke Matsumoto, Low Overhead TCP/UDP Socket-based Tracing for Discovering Network Services Dependencies, Journal of Information Processing, Vol. 30, 2022. [code] .

国内会議録(査読付き)

  1. 林友佳, 松原克弥, 鷲北賢, 坪内佑樹,(ポスター)Situation Awarenessと認知心理学にもとづいたマイクロサービス型システム向け監視ダッシュボードの設計, インターネットと運用技術シンポジウム論文集, 2021, 97-98 (2021-11-18), 2021年12月.
  2. 坪内佑樹, 青山真也, Meltria:マイクロサービスにおける異常検知・原因分析のためのデータセットの動的生成システム, インターネットと運用技術シンポジウム論文集, 2021, 63-70 (2021-11-18), 2021年11月. [論文] [発表資料] [code]
  3. 鶴田博文, 坪内佑樹, 分散システムの性能異常に対する機械学習の解釈性に基づく原因診断手法, インターネットと運用技術シンポジウム論文集, 2021, 24-31 (2021-11-18)**, 2021年11月. [論文]

国内口頭発表

  1. 坪内佑樹,古川雅大,松本亮介 ネットワークサービスの依存発見に向いたTCP/UDP通信の低負荷なトレース手法, 第8回WebSystemArchitecture研究会, 2021年06月05日.

OSS

ブログ

本当は年末にもう1記事用意していたのだけど、間に合わなかった。

これまでの振り返り記事

どうでもいいけど、だんだん振り返りのタイトル付けが落ち着いてきている。

来年もよろしくおねがいします。

2020年の研究振り返り

今年は、エンジニアから研究者になって2年目になる。

社会情勢の変化を除いては、さくらインターネット研究所での研究活動の一貫として、京大情報学研究科の博士課程に進学したことが最も大きな変化だった。 とはいえ、博士課程ではなにか特別新しいことをやり始めたということはない。 研究内容はそのままに、自分にとっての「普遍的学術的貢献」とは何かを考えるプロセスとして博士課程を位置づけている。 自分にとっての研究活動や博士課程の位置づけについては、キャリアについて寄稿する機会をいただいたので、次の記事にまとめてある。

今年は、研究報告、国際会議、ジャーナル(論文誌)への採録と、学術研究の一連のプロセスをこなせるようになった。 国内では、山下記念研究賞やシンポジウムで連続して賞をいただくようになり、対外的な評価も少しずつついてきた。 論文誌の査読も依頼されるようになってきた。 投稿論文をリジェクトされたりしながらも、概ねに順調に研究は進捗している。

所属する研究所、研究室、共同研究先でのディスカッション、論文の査読を通し、過去の自分と比べて、研究スキル、とりわけ言語思考能力が大幅に高まっていることを実感している。 エンジニアをやっていたころは、具体的なテクニックや専門知識を習得・披露することに拘泥していたせいもあって、より一般的な思考能力にこんなに伸びしろがあるとは思っていなかった。

自分のスキルが向上する一方で、クラウド分野のトップカンファレンスの論文と自分が書く論文との差がどこにあって、その差がどの程度大きいかも徐々に精緻にみえるようになってきた。 GoogleやFacebook、Amazonからでている有名論文だけに着目すると、もはや研究環境が違いすぎてどうしようもなくみえてくるが、それ以外の論文に目を向ける機会が増えてきた。 その結果、実環境のデータの差よりもむしろ、既存の手法を泥臭く実装して比較したり、比較の結果みえてくる具体的な課題が設定されていたり、何回も投稿してはリジェクトされては修正を繰り返したりと、努力量の差が大きいのではないかと思うようになってきた。

その一方で、個人でやれることの限界もすこしずつみえてきた。 実践的な研究の理想形は、学術としての貢献を示しながらも、事業で実践できるレベルにソフトウェアを作り込み、なおかつ、実際に現場に導入し、事業での貢献も示すことになる。 今個人でできるのは論文を書いて、論文の評価のための実験環境とプロトタイプ実装をつくるところまでだ。 この序盤の範囲であっても、機械学習のように別分野の手法を組み合わせようとすると、その専門家とチームでやっていく必要があった。 さらに、自分と同じようなクラウド分野の研究者が少なく、この分野で世界でどんな研究がされているかの情報収集も個人でやっているが、なかなかキャッチアップが追いつかない。 現場に導入しようとすると、研究で解決するような問題以前の組織的課題やマインドセットの課題に行き当たる可能性を考えると、なかなか積極的にはなりづらい。

この個人の限界をゆくゆくは超えていくために、研究所内での連携を充実させたり、研究者とエンジニアが議論する場であるWSA研を継続したり、社内で発表したり、他の会社さんと情報交換の場を設定したりと、僅かではあるけれども、先鞭をつけている。 この限界に対して、ここで述べているよりもより広い範囲で同僚のまつもとりーさんが来年取り組まれていく

時系列の振り返り

ここまでで大まかに今年を振り返った。以降では、年始から年末までの出来事を順番に振り返っていく。

今年の冬から春先までは、寒さだけを感じながらも、大学院の入試の準備をしていた。 昔大学院を中退した結果、修士の学位がないので、入学審査を受ける前段の資格審査も必要だったこともあり、書類と研究計画をまとめることに時間がかかっていた。 このとき出版済みの博士論文をいくつか眺めたり、E・M・フィリップス著「博士号のとり方」を読んだりして、学術や博士とは何かについて思いを巡らせていた。 ネットワークメディア専攻を志望したので、試験勉強のために、TCP技術入門――進化を続ける基本プロトコルを一夜漬け程度に読んだりしていた。

研究所では、量子アニーリングが研究テーマの一つだったので、藤井先生の著書 驚異の量子コンピュータ 宇宙最強マシンへの挑戦を読んだり、たまたまこの時期に京都で開催された藤井先生の講演に参加して、量子コンピュータを簡単に勉強していたりした。

同時に、1月末には、SREの初の国内カンファレンスであるSRE NEXT 2020で基調講演の機会に恵まれた。 前年から言い続けている、SREとそれ以前の運用との差は、失敗を前提とし信頼性はコントロール対象であることを大勢の方々を前に改めて述べられた。 どれだけ僕の言が寄与しているかはわからないが、SREに対する世の中の認知と、自分の認知はこの1,2年で揃ってきたように感じた。 このころは、あまり余裕がなく、発表内容が博士課程の研究に寄りすぎていたきらいがあった。 今なら、もうすこし夢をふくらませるような話ができそうだと思っている。 次回開催されるようなら、ぜひCfPに応募して発表したい。

SRE NEXT基調講演を終えて - ゆううきブログ

さらに同時に、国際会議IEEE COMPAC 2020のために、論文を英語化していた。 博士課程の審査と日程が近くて少し大変だった。 最終的に、昨年よりも劣るWorkshop採録になってしまった。 この論文を今ジャーナル投稿のために練り直している。 今読むと、この当時、校正にはだしたものの、英語の質もあまり高くなく、論文としての出来も国内シンポジウムに投稿したレベルからブラッシュアップできていなかったので、結果は当然とも言える。

3月は溜まっていた有給を一気に消化し、3週間ぐらい休んでいた。 おかげで、近所の川沿いの桜をながめながら、季節の変化を感じる心の余裕ができた。 寝る間を惜しんで、SFアドベンチャーゲーム「十三機兵防衛圏」とか「FF7 Remake」をやっていた(FF7は4月だけど)。 これだけ集中してゲームをクリアしたのは社会人になって初めてかもしれない。 近所のいろいろな料理店に通いまくるのが趣味だったので、ずっと自炊をやってなかったけど、ウイルスが飛び交う世界になったので、自炊道具を揃えて、引っ越してから6年目にしてかんたんな料理をするようになった。 とはいっても、次の月から締め切りに追われ始めると、あっという間に習慣は失われた。 休みながらも、shawkをコードを書いていて、性能を上げたり、テストを充実させたりしていた。

さくらインターネット研究所での1年 - ゆううきブログ

春から夏にかけては、リジェクトされたHeteroTSDBの論文を再構成していた。 論文のストーリーを大幅に変更し、プロトタイプ実装を一から作り直していた。 VictoriaMetricsやCassandraをはじめていじったり、性能がなかなかでない問題を解決していたりしていた。 Redis Clusterとgo-redisの深刻な性能劣化を解決した話 - ゆううきブログ 大学院の講義をいくつか受けていたのだけど、あっという間にでる暇もなくなっていった。 休日出勤を活用しながら、毎日、論文、実装、実験を行き来していて、元気だったが、睡眠が不安定で、いろんな時間に寝ては起きていたりした。 そのせいか、このころのエピソード記憶とカレンダーとの紐付けが狂っていて、このころに起きたはずの出来事が昨年起こったように感じたりする。

夏は、代休を使って、10日くらい休んだのちに、同僚のつるべーさんと一緒に、SREの問題を機械学習や統計的因果探索を使って解く研究を始めた。 SREの中で、僕が着目する問題意識は、サービスレベル目標(SLO)を軸にした異常の原因探索のための研究の調査 / SLO-based Causality Discovery in Distributed Applications - Speaker Deckにまとめている。 このときは何の成果もなかったが、見切り発車で9月締め切りのIOTS2020に投稿することだけは決めていた。 マイクロサービスを対象としたために、実験環境の構築に手間ひまをかけることになった。 GKE上にPrometheusとSock Shopを構築し、意図的に異常を起こすテクニックを模索していたりした。

締め切りが終わったら次の締め切りがやってくるものである。 秋口は、涼しさを感じる間もなく、HeteroTSDB論文の条件付き採録に対する回答文を作成していた。 採録条件が重たく、再実験が必要で、なおかつ、回答文の作成が初めてなこともあって、休日出勤もいれて2週間ぐらいかかりきりになった。 修正は大変だったけど、その分、いい論文になったと思う。

10月に代休と夏休みをいれて、3週間ほど休暇をいれた。 ずいぶん疲れていたようで、1週間ぐらいひたすら家でだらだらと過ごしていた。 友人とヴァイオレット・エヴァーガーデンの映画を見に行ったり、秋の散歩を楽しんでいた。 機械学習の勉強も始めた。 今更すぎるけど、機械学習はおもしろい。

秋から冬にかけては、国際会議や機械学習の国内研究会、LINE DEVELOPER DAYなどに参加していたり、研究所にNotionを導入したり、WSA研などTSifterの研究をいくつかの場でフィードバックをもらいながらブラッシュアップをしていた。 機械学習にせよ、LINE DEVELOPER DAYにせよ、学術とエンジニアリングが入り混じった空間が形成されているように感じた。 さらに、世界の最先端の研究の話を当たり前のように議論していたり、発表されていたりすることに羨望を感じた。 クラウド系の国際会議IEEE CLOUD 2020参加録 - ゆううきブログ

この時期は、自分の研究に集中しきれなくて、これまでやってなかった環境整備を進めていたりした。 Notionは本当によくできていて、研究所内での情報共有量も増えてきて、満足している。 研究室に入学後はじめて訪れた。秋の京大は紅葉が美しかった。

12月は、IOTS2020で発表した。 社会人学生の発表者だけで構成された疑惑の学生セッションだった。 互いの共著者や同僚同士で質問し合うセッションとなり、おもしろかった。

月単位ぐらいで開催されているさくらインターネット社内全体向けの研究会で、今年の活動を総括しながら、IPSJ-ONE 2017から考え続けてきた、もう少し先のビジョンをかんたんにまとめた。

]

年末の今は、鬼滅の刃の映画を観に行ったり、FF14で遊びながらも、Transtracerの研究のジャーナル投稿に向けて、実装を改良するために、eBPFと戦っている。

今年は、デッドラインに向かって、休日出勤して、研究に集中して、その後代休と有給を使ってゆっくり休むスタイルが根付いてきた。 緩急をつけやすく、休みの間は、罪悪感をあまり感じずにゲームしたり、だらだらしたりすることができた。

孤独との向き合い方

昨年から自宅でのリモートワークだったので、働き方の面では、コロナ禍の影響をあまり受けなかった。 ただし、昨年は、毎月研究会やカンファレンス参加のために出張していたことを踏まえると、部屋にいる時間は長くなって、人と話すことも減った。 部屋のなかで独りで黙々と研究するのは、性にあっているが、やはり孤独を感じることもあった。 また、同分野の研究者が少ない上に、同分野のエンジニアとは目指すところや議論の仕方にも違いがあるので、距離を感じることもあった。 そんなときは、「孤独を恐れない」を思い出すようにしている。

研究をする、まだ名前がない技術分野を突めようとする時に、先が見えずわけもわからず一人で苦しいと感じることがあるかもしれません。そんな時は孤独を友だちにしたい。 何かを突めるとき、孤独から逃げない姿というものに美しさを感じます。

孤独から逃げようとして動機を失うぐらいであれば、孤独を受け入れ、孤独だからこそ生まれる動機を大事にしていきたい。

2020年の研究成果リスト

最後に今年の研究成果のリストを貼っておく。

受賞

  1. 情報処理学会インターネットと運用技術シンポジウム2020(IOTS2020)優秀論文賞 坪内佑樹, 鶴田博文, 古川雅大, TSifter: マイクロサービスにおける性能異常の迅速な診断に向いた時系列データの次元削減手法, インターネットと運用技術シンポジウム論文集, 2020, 9-16 (2020-11-26), 2020年12月.
  2. 情報処理学会インターネットと運用技術シンポジウム2020(IOTS2020)優秀プレゼンテーション賞 坪内佑樹, TSifter: マイクロサービスにおける性能異常の迅速な診断に向いた時系列データの次元削減手法, 2020年12月.
  3. 2020年度 情報処理学会 山下記念研究賞,坪内佑樹, Transtracer: 分散システムにおけるTCP/UDP通信の終端点の監視によるプロセス間依存関係の自動追跡, 2020年.

論文誌論文

  1. 坪内佑樹, 脇坂朝人, 濱田健, 松木雅幸, 小林隆浩, 阿部博, 松本亮介, HeteroTSDB: 異種分散KVS間の自動階層化による高性能な時系列データベース, 情報処理学会論文誌, Vol.62, No.3, 2021年3月. [論文] code (to appear)

国際会議録(査読付き)

  1. Yuuki Tsubouchi, Masahiro Furukawa, Ryosuke Matsumoto, Transtracer: Socket-Based Tracing of Network Dependencies among Processes in Distributed Applications, The 1st IEEE International COMPSAC Workshop on Advanced IoT Computing (AIOT 2020), July 2020. [paper] [no presentation] code

国内会議録(査読付き)

  1. 坪内佑樹, 鶴田博文, 古川雅大, TSifter: マイクロサービスにおける性能異常の迅速な診断に向いた時系列データの次元削減手法, インターネットと運用技術シンポジウム論文集, 2020, 9-16 (2020-11-26), 2020年12月. [論文] [発表資料]

国内会議録(査読なし)

  1. 松本亮介, 坪内佑樹, クライアントプロセスの権限情報に基づくTCPを介した透過的な権限分離方式の設計, 情報処理学会研究報告インターネットと運用技術(IOT), No.2020-IOT-49, Vol.11, pp.1-6, 2020年5月.
  2. 林友佳, 伊勢田蓮, 松原克弥, 鷲北賢, 坪内佑樹, 松本亮介, 動的適応性を持つ分散システムを対象としたシステム状態可視化手法の検討, 情報処理学会研究報告インターネットと運用技術(IOT), No.2020-IOT-48, Vol.22, pp.1-8, 2020年3月.

国内講演

  1. 坪内佑樹, (基調講演) 分散アプリケーションの信頼性観測技術に関する研究, SRE NEXT 2020 IN TOKYO, 2020年1月25日 [動画]

国内口頭発表

  1. 坪内佑樹,鶴田博文,古川雅大 マイクロサービスにおける性能異常の迅速な診断に向いた時系列データの次元削減手法, 第7回WebSystemArchitecture研究会, 2020年11月14日.
  2. 坪内佑樹, 分散アプリケーションの異常の因果関係を即時に推論するための手法の構想, 第6回WebSystemArchitecture研究会, 2020年4月26日.

学会誌・商業誌等解説

  1. 坪内佑樹, ITエンジニアから研究者へ。社会人博士として大学院にも再挑戦し、自分の「代表的プロダクト」を追求するわけ, Findy Engineer Lab, 2020年5月.

クラウド系の国際会議IEEE CLOUD 2020参加録

2020年の10月18日から24日までの5日間にわたって、国際会議IEEE World Congress on SERVICES 2020(IEEE SERVICES 2020)がオンライン形式で開催された。 IEEE SERVICESは、IEEE Computer Societyにより2004年から開催されている「サービスコンピューティング」全般に関連するトピックを扱う複数の国際会議が共催されるイベントとなっている。 本来は、7月に北京開催されるはずだったが、COVID-19の感染拡大の影響により、10月に延期されたのちにオンライン開催される運びとなった。 今回開催されたのは次の5つの国際会議、CLOUD/ICWS/SCC/SMDS/EDGEである。

このうちCLOUD 2020を中心とした参加報告を次のスライドにまとめている。

各発表を聴講したところ、多くの発表に共通してみられた特徴として、対象システムとして、クラウド上のマイクロサービス、反応的にスケールするサーバレスコンピューティング、多数のエッジとクラウドの連携といった動的かつ分散した複雑なシステム構成を想定していた。 このようなシステムでは、システム管理者によるルールベースの設計や運用が限界となることから、より賢い手法として、待ち行列理論や数理最適化問題などの古典的な数理モデルの適用に加えて、機械学習と深層学習を適用するというアプローチが採られていた。 そして、新たにML/DLを適用するというより、すでにそれらを適用した先行研究の課題を解くという段階に入っていた。 自分の観測範囲内では、半数以上がこの手の発表だったように感じた。

このスライドでは、まさにそのようなアプローチを採っているIEEE CLOUDのベストペーパー賞を受賞したAnirban Dasらによる「Skedulix: Hybrid Cloud Scheduling for Cost-Efficient Execution of Serverless Applications」の概要を紹介している。 Skedulixは、サーバーレス(FaaS)のプライベートクラウド構成において、Functionのジョブ処理を一部パブリッククラウドにオフロードしたいときに、できるかぎりプライベートクラウドで捌いてコストを最小化したいが、処理時間を悪化させたくないので、パブリッククラウドのFaaSを使ってスケールさせたいという要求に対して、うまくジョブをスケジューリングする手法を提案する研究だった。

また、自分の研究領域に近しい研究として、異常検知と根本原因特定に関する発表を3つ簡単に紹介している。

Deep Unsupervised Workload Sequence Anomaly Detection with Fusion of Spatial and Temporal Features in the Cloud

時系列のメトリックに対して、教師なしで異常を自動検出するために、ディープニューラルネットワークを用いて、シーケンスの本質的な特徴を捕捉し、異常シーケンスの無関係な特徴を分離するという手法がとられている。

RAD: Detecting Performance Anomalies in Cloud-Based Web Services

システムの下位層で取得可能なシステムデータとURL情報のみから、 VMからURLとシステムメトリックを継続的に監視し、キューイングネットワークモデルを構築して、モデルで予測した応答時間を、異常がない場合のモデルで予測されたベースラインとなる応答時間と比較して異常検知を行う。 この研究においてはそれほど重要なことではないかもしれないが、待ち行列として扱えるように、システムデータとして、スレッド数などのソフトウェア並列度を取得していたことに興味を持った。

Root-Cause Metric Location for Microservice Systems via Log Anomaly Detection

従来であればメトリックだけで相関分析したり、ログだけで異常検知をしていたが、ログを異常度、つまり数値情報に変換した上で、同じく数値情報であるメトリックと突き合わせて、相関分析するというアプローチが提案されている。 メトリックとログをうまく扱いたいとぼんやり思っていたが、テキストと数値の時系列をうまく扱っていておもしろいアプローチだと思った。

オンライン聴講の工夫

事前に英語の論文が配布されるのだが、量が多いので、英語のままで目を通すのはなかなか大変なので、休憩時間に、DeepLを使って、アブストとイントロを日本語に翻訳して、セッションごとに分割したNotionのページに貼り付けておいて、ギャラリービューで一覧できるようにして共有するということをやっていた。 これにより、研究の内容がある程度頭に入った状態で、発表を聴くことができた。

発表は当然英語なのだけど、残念ながら英語のリスニングがおぼつかないので、音声をリアルタイムに書き起こしできるサービスであるOtterを使って、英語字幕を表示させて発表を聴いていた。昨年も使っていたが、以前より精度が高まっているように感じた。 オンライン聴講では、手元の端末から出力される音声をまた手元の端末に入力する、つまりループバックさせる必要があり、そのためのmacOSでの手順を次のリンクにまとめている。

https://www.notion.so/yuuk1/Listening-Talks-a95698a888634120a3e285c3085ab4f2

2020/10/29 15:50 追記: Otterを利用する場合は、参加するカンファレンスの録音やスクリーンショット撮影の可否を事前に確認しておくとよいでしょう。後日動画が公開されるようなカンファレンスであればおそらくは問題ないのではないかは思います。

所感

クラウドコンピューティングにまつわる課題を機械学習をはじめとした数理的アプローチで解く研究が多数発表されたことから、現在取り組んでいる研究の発表の場として適切であると感じた。 このような研究が多数発表されているにも関わらず、未だ現場ではルールベースの運用がなされていることから、実環境への適用可能性に重視して研究していこうという気持ちになった。

同僚のまつもとりーさんも一緒に参加していろいろ感想を書かれているので、そちらも参照してみてほしい。 https://matsumotory.hatenadiary.jp/entry/2020/10/24/232547

過去の参加報告

国内の学術雑誌に寄稿されていたIEEE SERVICESの参加報告を参考にさせていただいた。

  1. 千葉 立寛, IEEE SERVICES/CLOUD 2018 参加報告, コンピュータ ソフトウェア, Vol.36, No.1, pp.74-78, 2019.
  2. 中澤 里奈, IEEE SCF 2017/CLOUD 2017参加報告, コンピュータソフトウェア, Vol.34, No.4, pp.75-78, 2017.
  3. 勝野 恭治, IEEE CLOUD 2016参加報告, コンピュータソフトウェア, Vol.34, No.2, pp.75-78, 2017.