Learn Tech from AWS Specialist Series ~③ (AI/ML 編)
■プロフィール
アマゾンウェブサービスジャパン合同会社 機械学習スペシャリストソリューションアーキテクト
Go
Go : 機械学習スペシャリストソリューションアーキテクト
Ochimizu : コンテナスペシャリストソリューションアーキテクト
プロローグ
(Amazon Bedrock の Stable Diffusion XL 1.0 で生成)
神の声「もしもし…聞こえますか…あなたたち二人は機械学習スペシャリストソリューションアーキテクト(以降 ML SA)と、コンテナスペシャリストソリューションアーキテクト(以降コンテナ SA)です。これから二人で対談するのです…」
「何のっけからふざけてるんですか」
「ML SA としては最初に機械学習でなにか出してからアイスブレイクしてから会話するのがいいんじゃないかと思いまして」
「今日は Tech play という Public なメディアに我々の対談が掲載され、記事の最後に Amazon WoW Careers という公式 Web サイトに導線をはるので、ふさわしい振る舞いをお願いします。」
「まず WoW ってなんですか?驚いたことにこの Web サイトのどこにも書かれてないんですが?WoW だけに」
「Amazon Women of the World らしいですよ。さっき編集部に聞いてきました」
「さすがの調査力です。とすると新たなる質問が。身体も性自認も男性の我らが対談してもいいんですかね?」
「我らに期待されているのは、そもそも AWS の ソリューションアーキテクト(SA)の仕事が知られていないので、広報して欲しいってことみたいですよ」
「私は、てっきり Go が”男の娘”としてなにかやって欲しいのかと思いましたよ」
「(あ、やるんだ)弊社的にも社会的にも Inclusion, Diversity & Equity として、男の娘をやってても大歓迎ですがそうではなく、今回はスペシャリストソリューションアーキテクトのお仕事を紹介してほしいらしいです」
「AI/ML スペシャリスト SA として、機械学習を使うと、すぐにこういうこともできるんですよ、という紹介がてら機械学習を使って加工してみたんですよ」
「いつもお仕事と称して機械学習で楽しそうなことばっかりしてますものね。今回は機械学習編ということで、私が Go さんにインタビューする形です」
「ちなみにコンテナスペシャリストの Ochimizu さんにインタビューした記事は Learn Tech from AWS Specialist Series ~② (コンテナ 編)からご覧ください!」
これまでのキャリアは?
「そんな Go さんがどうやって生成されたか、教えてください」
「まず乱数からノイズ画像を生成させ、そこから CLIP を通して得た自然言語のベクトル表現に併せてノイズを逆拡散させるために U-Net の中で Vision Transformer を何回も…ってだーれが Diffusion Model (※) やねん!」
「いきなりアルゴリズムの話をしないでください。最初に作った神様の絵ではなくてですね」
「大学では電気自動車のサスペンションのジオメトリ計算や制御アルゴリズムの研究をやってました」
「(真面目な自分語りが始まったぞ)」
「卒業してから建設機械メーカーで、溶接工場とか塗装工場の生産ラインで研修してたんですよね」
「ということは溶接や塗装ができるんです?」
「大学でやったことはありますけど、趣味レベルで業務では当然できません。なので、主にタイムキーパーとか清掃とか、あとは邪魔にならないように雑用をやってましたね。溶接工場と塗装工場って保護の観点から長袖を着ないといけなくて(溶接は紫外放射で日焼け、塗装は塗料がつく)、夏がとにかく熱いんですよ。作業者のところにスポットクーラーが置いてあるんですが、建屋全体には効かないのでとにかく暑かったんですよね」
「(唐突な苦労話)」
「現場の苦労が少しだけわかったのは今でも財産なんですけどね。あと、建設機械の技能講習も受けたので、実はブルドーザーやホイールローダー、ショベルなんかも運転できるんですよ」
労働安全衛生法による技能講習終了証を持つ Go
「今のところ機械学習のキの字も出てこないですが、機械の運転の学習をされたんですね」
「他にも端折った研修もありますが研修が終わった後、建設機械の IoT システムの DWH (Data Warehouse) の開発を 6 年ほどしていました。当時は IoT なんて言葉はまだ出てなくて、M2M (Machine to Machine) でしたけど、IoT という言葉が流行る前から IoT で集めた巨大データを触らせてもらえたのはラッキーでした」
「お、ここでデータを扱っていて機械学習の道へ?」
「目の前に DWH があったので、いろんな SQL を書いてアドホックに集計したり、ETL ツールや R 言語や Python でデータ処理したり、BI ツールでダッシュボードを作ったり、データをハンドリングするスキルはここで身につけました。もちろんお遊びで機械学習もやりましたが、本業ではなかったです」
「いつになったら機械学習の話が出てくるのやら」
「しばらくデータエンジニアみたいなことをしてました。データ量が増えすぎたので分散処理フレームワークの Hadoop 導入をやらせてもらったりしました。厚着して(※)自分でサーバーをラッキングして、OS インストールから Hadoop クラスタを立ち上げたりしたのは、今ではやらないですがいい経験でした。サーバールームはそんなに頻繁に出入りしてたわけではないですが、UPS の重さは今も腰がよく覚えてますし、廃棄ストレージをセルフで破壊したりと思い出一杯です」
※Ochimizu 注: サーバールームは一般に寒いです
「Hadoop クラスタの立ち上げ、今だと Amazon EMR で一瞬で立ち上がりますもんね」
「そうなんですよ。あーいうのをやった経験があるとクラウドのありがたみがわかるので、もう戻れなくなっちゃいますよね。その後国内の SIer のシステムコンサルタントに転職しまして」
「お、なぜ唐突に?」
「それまで社内向けの仕事をやっていたのですが、売上を自分で作る経験をしたくなったんですよね。今まで社内の仕事をしていたので、自分の稼動に対してのコスト(=つまり自分の売上)は発生していたのですが、本当にお金を貰えるような仕事をしているのかという疑問があって、コンサルタントはお客様に直接デリバリーできるのでお金をもらうに値するかわかるだろうってことで」
「(意外と意識が高いな)そこでついに機械学習を?」
「はい、当時はテーブルデータやら画像やらでの機械学習が全盛期で現場で調べながらなんとか覚えた感じでしたね」
「しかしそこからなぜ AWS へ?」
「コンサルタントの仕事にも順応して自分の売上は計上されていったのですが、どこまで行っても自分の時間労働分しか計上出来ないので、自分の仕事がスケールしづらかったんですよね。で、データサイエンスという文脈であれば自社プロダクトに関するデータサイエンスならスケールするなぁと思って、事業会社への転職を考え Amazon のデータサイエンティストを応募したのですが」
「(ちゃうやん)」
「Amazon のリクルーターに『あなたの経歴では Amazon のデータサイエンティストよりも、AWS の機械学習 Solutions Architect の方がいけるかも』と言われまして、クラウドでもスケールするなぁ。受けらぁ!ってなって気づいたら入社していた次第です。実際、YouTube にAWS Black Belt オンラインセミナーの動画(①,②)を公開したり、AWS Builders Online Series (①,②)や AWS Summit で登壇したり、後述のブログを書いたりして、今までの仕事になかったスケール感を感じてます」
「私もよくブログと動画見てますよ」
「記事の中身じゃなくてネタだけですよね。知ってます」
機械学習の勉強法
機械学習の勉強法のヒアリング…の前に
「これ、記事の編集者から聞けって言われたんで聞くんですが、いい機械学習の勉強法ってあるんですか?」
「フリも質問も雑すぎませんか!?」
「フリが雑なのはお許しください。対談のテーマとして一つあげたこととして」
「まぁなんか記事にするために、ML SA として活動する上での勉強の仕方と読み替えますよ?」
「多分問題ないです。…というと本読んでます、とか YouTube で機械学習完全に理解した、とかそういう単純化した話ではない深い話を聞けるんでしょうか」
「深いかどうかはわからないですが、機械学習の勉強が指す機械学習の意味というかスコープによって大幅に違うんですよ」
「というと?」
「例えば音楽の学習法は?と聞かれても、演奏の勉強なのか、歴史の勉強なのか、学問としての勉強なのか、最近のトレンドの勉強なのか、などやることが多岐に渡るしそれぞれによって勉強法が違うわけですよね。演奏なら実際に演奏してみないことには学べないですが、学問としての勉強であれば机上で済むかもしれないじゃないですか」
「あーなるほど。とすると機械学習の何を学ぶのか、つまり SA として機械学習のどんなスキルが必要になるのか、のスコープによって勉強の仕方が変わってくるってことですね」
「その通りなんですよ。なので機械学習の勉強というとモデル/アルゴリズムの勉強を想像する人が多いかもしれないですが、SA として活動するとそれだけではない、というより他に重要なものがたくさんあるよ、という話ですね」
「ということは SA としてどんなスキルが必要なのかの棚卸しをこれからしてくれると」
「実はなんもスキルがいらなかった、ってオチが怖いのでパンドラの箱っぽさはありますが、これを機に紐解いてみましょう」
「ML SA に必要なスキルってなんですかね。というより ML SA って何やってるんですか?っていうか仕事してるんですか?きのこの山とたけのこの里食べたり、献立を AI に考えさせたり、AI と連歌したり、ピアノ弾いていたり、遊んでいるイメージしかないですけど」
「やってますよ!それらは遊びでもありますが仕事でもあります」
「(遊びは否定しないんだ)」
「私のメインの仕事はお客様の機械学習のワークロードを AWS に乗せる技術的なお手伝いですね。そして AWS を使い続けてもらうためには、お客様の機械学習のプロジェクトを AWS に載せるだけじゃなくプロジェクトを成功させる必要があるんですよね。失敗したら AWS で動なくなっちゃうので」
「それは我らコンテナと一緒ですね」
「そのとおりです。ただ機械学習とコンテナで微妙に違うかな、と思うところがありまして。機械学習ってそもそもうまくいくかいかないか確率的なところがあって、モデルを作ったけど期待する精度が出なかったので、ビジネスになりませんでした、ってのがあるんですよ。それはもう AWS が関係ない世界なんですが、そこに対しても頑張れるというのが ML SA の面白いところですね」
「確かにコンテナだと技術的にいけるかとコストが見合うかみたいな話が多いですが、精度の話があるんですね」
「なので、まず機械学習プロジェクトを成功させるスキルが必要なんですよ。今でこそ少なくなりましたが、機械学習をやることが目的となってしまっているケースもあり、それは業務で解決しようよ、とか、それルールベースでよくないですか?みたいなところをフィルタするスキルとか、本当にそんな精度いる?みたいなのも含め、機械学習プロジェクトをうまく進める方法が必要ですね」
「それはどうやって学習したんですか?」
「まずは経験で機械学習プロジェクトに放り込まれて体で覚える感じでしたが、やはり体系だった知識も必要とは感じていて当時は CRISP-DM のようなフレームワークとかから学びましたね。ただ、今から学ぶのであれば書籍が充実しているので本で学びますね」
「例えば?」
「失敗しない データ分析・AIのビジネス導入:プロジェクト進行から組織づくりまでがオススメですね。機械学習プロジェクトを立ち上げる前のゴール設定からプロジェクト運用など機械学習を本番利用までこぎつけるのに必要なエッセンスがまとまっています」
「(パラパラめくりながら)ただこれ、エンジニア向けではなくプロジェクトマネージャー向けで、あんまり技術要素は載ってないんですね」
「そうですね。手を動かす前に覚えておけ、って知識が入っている本ですね。ただおっしゃるとおり技術の本ではない(≠機械学習に関わるエンジニアが覚えなくていい)ので、そういう人向けには、仕事ではじめる機械学習がいいと思います。こちらは、第一章がプロジェクトの各フェーズでどんな目的でどんなことをしないといけないのかを学べて、その後は技術の話になっているので、エンジニアにはおすすめです」
「こっちは私も読み切れそうです」
「あと、AWS もそこらへんの知識は日本語でも公開していて、ML Enablement Workshop というのを出しています。こちらは知識と技術だけじゃなくどのような各々のロールがどんなコミュニケーションを取るべきかの演習などもあるので、より実践的です。私が作ったコンテンツもあるのでぜひ見てみてほしいですね。っていうか見てください Ochimizu さん」
「…真面目なお仕事もされていたんですね」
「…」
「とはいえ、機械学習のモデルの勉強の話も当然あるんですよね?」
「はい、たいていのお客様はこのモデルを使うって決めているケースが多いのですが、やはりそれがお客様の要求を満たすものか、例えば極端な話、推論時間に1秒しかかけられないのに巨大なモデルを選択してすでに破綻していないかどうか、などのチェックは必要で、そのときにやはりモデルの知識は必要です」
「そういった知識はどうやって?」
「最新のモデルであれば、論文公開サイトである arxiv で読むことが多いですね。英語ができない私には苦痛なのですが仕方ありません。ただ、最新のモデルが最適というわけではなく、古典という表現が正しいかわからないですが、昔からあるモデルも大事です。先程紹介した、仕事ではじめる機械学習などにもある程度書いてあります。それ以前にモデルを学習させるためにはデータを前処理しないといけません。前処理もいろいろなテクニックがあってちゃんと習得すべきなんですが、前処理に特化した、機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践はおすすめです。あとモデルの話に戻りますが、モデルの原理を数学的に理解するにはやはり、パターン認識と機械学習(通称:PRML)がいいですね。正直難しくて理解してるか?と言われると怪しいですが」
「(めっちゃ喋るやん)ここまで深層学習の話が全然出てこないですが不要なんですか?」
「いえ、近年の AI を理解するには深層学習を外せません。今までの本にも深層学習を扱ってる部分はあるのですが、ちゃんと理解するのであれば、ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装がおすすめです。文字通りどのように機械学習が動くのかを教えてくれたあと、深層学習のライブラリを使用せずに深層学習を実装させます。ちゃんとやれば深層学習を理解できますね。この本は続編がいくつか出てますが、ゼロから作るDeep Learning ❷ ―自然言語処理編は最近の生成 AI で必ずと言ってもいいほど使われる Attention とその応用の Transformer にも触れられているのでおすすめです」
「ここまで AWS スキルの話が全く出てこないですが、AWS の話もしてくださいよ」
「AWS 入社までは、AWS をほぼ使ったことがなかったんですよね。入社してからほぼ全て学んだのですが、結局使って動作を確認して学んでばかりです。参考になるんだかならないんだか」
「習うより慣れろですよね」
「機械学習周りのサービスならお客様の案件をこなしているうちにそれでかなり網羅できちゃいますね。ただ、理解の整理という意味で AWS Black Belt Online Seminar への投稿が良かったですね。人に聞いて理解してもらうためにはいろいろ知識を整理する必要がありました」
「開始 0 秒でネタをぶち込んだアレですね。公式コンテンツでネタをいきなりぶち込んでいる動画を始めて見ましたよ。AWS 社員以外が Black Belt に投稿するのは基本的にできないと思いますが、他の人に説明する、というのはとてもいいですね。ただ、それ以外にいい習得法はないんですか?」
「同僚が翻訳したオライリー本の実践 AWSデータサイエンス ―エンドツーエンドのMLOpsパイプライン実装はお勧めですね。機械学習の基本的なところから、AWS でのアーキテクティングまでを実践的に学べます。実は英語ができないにも関わらず翻訳のチェックをしたのもあり、私の名前が最後に載っているのは密かな自慢です」
「(それはただの押し売りでは…)それだけ思い入れがある本なんですね」
「あとは、機械学習を担当していますが、アーキテクティングや実装する上で、機械学習以外のサービスを触ることも多いです。入社直後にAWS 認定試験の Associate 3 つ( AWS Certified Solutions Architect - Associate, AWS Certified Developer - Associate, AWS Certified Sysops Administrator - Associate)を取ったのですがそのときに勉強した、AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第3版 (AWS認定資格試験テキスト) は良かったですね。これを読めば実務直結!!とはならないですが、こういうときはこのサービスってのが理解出来るのですぐに手を動かして調べられるようになります」
「知ってますよ、Go さんが Sysops を 2 回落ちたのを」
「あれ、本当にムズいんですよ…。でも勉強した知識は役に立ってているということで無駄じゃなかったんです。3 回目で受かりましたし」
「Go さんはブログをよく書いてますが、それらも勉強しているんですか?ネタの仕込みとか」
「ブログの勉強はしていないですが、AWS に入ってから機械学習以外の技術の勉強だとやってよかったな、と思うのは IaC(Infrastructure as Code) と 生成 AI のアプリケーション開発ですね」
「意外と勉強してるんですね。いつもふざけてばかりいるのかと」
「おふざけブログの一環(①,②)ではあるのですが、内容は真面目にやりましたよ。機械学習の界隈ってみんないわゆる、『俺が作った最強のモデル』とかがあったりして、それを誰かが再現しやすいようになっていないことが稀によくある(※)んですよね。そこに一石投じたくて IaC が普及すれば、後から再現する人が助かるだけでなく、自分の開発も楽になる(機械学習は似たようなことを反復するから)はずだ!と IaC やってみようと思ったんですよ」
「そこらへんはコンテナに通ずるところがありますね」
「まさにそうで、機械学習でコンテナを普及させる活動もそこに内包されています。で、AWS には IaC に関して精通している人がいるから学んだろうと思って、ブログを書きたいから IaC を教えてくれ!と土下座しに行ったら一緒にブログとコードを書いて教えてくれたんです。ここで学んだ IaC(の中の AWS Cloud Development Kit, 通称 CDK) が、先述の Web 開発にも繋がりまして」
「社内にすごい人いますから有効活用されていますね。そしてそれがどうつながったんです?」
「どんな本で学ぶよりも、達人についていくのが一番でした。昨今の生成 AI ブームが来てて自分もなんかやらないといけないと思ったんですが、生成 AI って自分でモデルを作るには数千万円から数億円のオーダーのコストがかかるので厳しいんです。一方、すでにあるモデルを使ってなにかしようにも私はフロントの開発をやったことがないのでできなかったんですよ。途方にくれていたんですが、Web 開発を得意としている AWS の同日入社 (2020/1/1入社)の人が生成 AI でなんか一緒にやろうぜって声をかけてくれたんですよ」
「Generative AI Use Cases JP ですね?私も使ってます。あれすごく便利ですよね。ただ IaC の話とどう繋がったんです?」
Generative AI Use Cases JP
Generative AI Use Cases JP を利用して冒頭の写真を生成
「はい、声をかけてもらって作ってもらったのが Generative AI Use Cases JP です。生成 AI のことはじめにはオススメで、ワークショップもあるんですよ。開発にあたって書いたことが無い TypeScript を調べて書いて、優しい鬼のレビューをなんとか通過してマージされたコードもちょっとあるのですが、このソリューションが CDK で書かれてるんですよね。早速別のところで役立ったな、と。今までだったらムリムリと諦めてたんですが、コードを書こうという気にさせてくれたんですよ。CDK がわかるからもう一歩先のわからないところにもちょっとだけ踏み出せて、読んだことも書いたこともない React もなんとかちょっとだけわかるようになりました」
Generative AI Use Cases JP における Go のわずかな Contribution
「新しい言語の習得に繋がったんですね」
「はい。ただそれだけではなかったんです。Generative AI Use Cases JP の活動を振り返って、機械学習とは直接関係ないコードも触って学んで思ったのは、機械学習の自動化(AutoML) のソリューションやサービスも出て機械学習の民主化という言葉が出て 5 年以上経ちましたけど、未だに機械学習は一部の人しかできなかった理由が見えてきまして。結局、ユーザーは用途がある程度限定されたわかりやすい UI が用意されていないと使わない、という。生成 AI ってチャットの UI で使うことが多くて最初のウチはなんか面白いなーって触ってくれるんですが、自由度が高すぎて何すればいいかわからなくなって、他の使い方を探さずに離脱しちゃう人もいるんですね」
「確かにチャットだと会話ができることはわかりますが、一通りチャットで遊んだ後に何を会話すればいいんだ、ってなりますね」
「もちろん発想が豊かな人はいろんなタスクを解かせますが、そこで止まっちゃう人もいると思うんですよね。でも、use case 毎にフォーカスした UI を用意すると、例えば翻訳であればここにテキストを入れて、翻訳先の言語を指定すればいいんだな、っての簡単にわかる UI があれば結構使ってくれるんですよね。機械学習や生成 AI をお客様に使ってもらうにあたってとても重要な知見でした。普段 UI 開発している人たちすごいんだな、ってのも実感できたのも収穫ですね」
Generative AI Use Cases JP の翻訳 use case の UI
「いろいろ聞いてると、機械学習以外の話も多く学んでますが、学ぶものについてどう決めているとかあるんですか?」
「IaC のように自分で必要だと思ったものが半分、それ以外の人からのお誘いが半分くらいの感覚ですね。学習するものだけに限った話じゃなく、なんかやろうぜってお声がけいただけることもあるので、自分で能動的にやるものと、誘われてやるものをなんとなくバランスさせてます」
「(何も考えてないんだな、この人)」
最後に伝えたいことは?
「普段ランチとかでふざけた会話しかしないですが、Go さんから初めて真面目な話を聞けたのがよかったです」
「総じて楽しく仕事してますね!先述の学習もそうですが、人との出会いや技術領域をドリフトさせてその場にあるものを楽しむことをモットーに仕事しています。そして、AWS はそういうのを楽しむ土壌があるのがいいですね。『これやりたい!』に対して私のマネージャーは『進め!』か『注意して進め!』しか出さないというのもありますが」
「Go さんのマネージャーの気苦労をお察しします」
「せっかく恵まれた環境があるので楽しい AWS ライフを送らないといけないのですよ。もし私のような働き方を見て AWS に興味を持ってくれたら是非応募してほしいですね。もちろん真面目な方のほうが多いので、真面目に働くこともできますよ!」
「私は真面目に働いてますもんね」
「いろんな働き方が許容されているいい職場ということで、大変ありがとうございました!!」
Amazon WoW Careersについて
Amazon WoW Careers は、IT 技術職で働かれている方とアマゾン・アマゾン ウェブ サービス( AWS )社員(技術職リーダー・リクルーター)を繋げるネットワーキング・プラットフォームです。
・IT技術職で働かれている主に女性の方
・技術職に興味があり、これから学びたいと考えている女性の方
上記いずれかに当てはまる方、Amazon WoW Careers の取り組みにご興味のある方はぜひこちらのウェブサイトにお越しください!