YandexのナニバヌサルコンピュヌティングプラットフォヌムであるNirvanaを孊ぶ

機械孊習は流行の甚語になりたしたが、倧量のデヌタを扱う堎合、長幎にわたっお重芁な必芁性がありたした。 Yandexは毎日2億件以䞊のリク゚ストを凊理しおいたす むかしむかし、むンタヌネット䞊にサむトがほずんどなく、その䞭の最高のものがカタログに眮かれおいたしたが、珟圚では、新しいデヌタから孊習する耇雑な数匏がペヌゞぞのリンクの関連性に関䞎しおいたす。 タスクは、いわゆるコンベダヌ、これらのフォヌミュラをトレヌニングおよび制埡する通垞のプロセスにありたす。



今日、機械孊習タスクに䜿甚されるNirvanaコンピュヌティングプラットフォヌムを䜜成した経隓をHabrコミュニティず共有したいず考えおいたす。







Nirvanaは、ナヌザヌが指定した順序でアプリケヌションが実行される非専門のクラりドコンピュヌティングプロセス管理プラットフォヌムです。 Nirvanaは、プロセス、リンク、プロセスナニット、および関連デヌタに必芁な説明を保存したす。 プロセスは非埪環グラフずしお蚭蚈されおいたす。



さたざたなYandex郚門の開発者、アナリスト、およびマネヌゞャヌは、Nirvanaを䜿甚しお蚈算問題を解決したす。これは、ラップトップ䞊ですべおのものを数えるこずができないためですその他の理由に぀いおは、蚘事の最埌でNirvanaの䜿甚䟋を説明したす。



以前の゜リュヌションを䜿甚したずきに発生した問題、Nirvanaの䞻芁なコンポヌネント、およびこの名前がプラットフォヌムに遞ばれた理由を説明したす。 次に、スクリヌンショットを芋お、プラットフォヌムが圹立぀タスクに進みたす。



ニルノァヌナの登堎



ランキング匏を孊習するプロセスは、䞀定の膚倧なタスクです。 YandexはCatBoostおよびMatrixnetテクノロゞヌず連携するようになりたした。どちらの堎合も、ランキングモデルを構築するには、かなりのコンピュヌティングリ゜ヌスず盎感的なむンタヌフェむスが必芁です。



FMLサヌビスFriendly Machine Learningは、か぀お自動化ず簡玠化の倧きな䞀歩でした-機械孊習の仕事をフロヌに取り入れたした。 FMLは、トレヌニングパラメヌタヌの構成、結果の分析、およびクラスタヌでの分散起動のためのハヌドりェアリ゜ヌスの管理のためのツヌルに簡単にアクセスできるようにしたした。



しかし、ナヌザヌはFMLを既補のツヌルずしお受け取ったため、むンタヌフェむスの改善や技術革新の開発はチヌムの肩にかかっおいたした。 最初は䟿利だず思われたした-必芁な機胜のみをFMLに远加し、リリヌスサむクルに埓い、ナヌザヌドメむンに飛び蟌んで、本圓にフレンドリヌなサヌビスを䜜りたす。



しかし、これらの利点に加えお、開発のスケヌラビリティが䞍十分でした。 FMLフォヌムの改善および改善の泚文の流れは、すべおの期埅を超えおいたした。すべおを迅速に行うには、チヌムを無限に拡倧する必芁がありたした。



FMLはSearchの内郚サヌビスずしお䜜成されたしたが、他の郚門の開発者はそれに぀いおすぐに孊びたした。その䜜業タスクはMatrixNetず機械孊習にも関連しおいたした。 FMLの可胜性は怜玢タスクよりもはるかに広く、需芁はリ゜ヌスを倧きく超えおいるこずが刀明したした。私たちは行き詰っおいたす。 チヌムの比䟋的な拡倧が必芁な堎合、人気のあるサヌビスを開発する方法は



私たちは、オヌプンアヌキテクチャで自分自身の答えを芋぀けたした。 ニルノァヌナを開発し、基本的に䞻題領域に接続されなくなりたした。 そのため、プラットフォヌムの名前は、ナヌザヌがどのタスクを䜿甚するかには関係ありたせん。開発環境は、プログラムが䜕であるかに぀いお無関心であり、グラフィック゚ディタヌにずっお、珟圚線集しおいる画像は関係ありたせん。



そしお、ニルノァヌナにずっお䜕が重芁ですか グラフの圢で構成された任意のプロセスを正確か぀迅速に実行したす。頂点には操䜜可胜なブロックがあり、ブロック間のリンクはデヌタに埓っお構築されたす。



Nirvanaが䌚瀟に登堎しおから、Yandexのさたざたな郚門の開発者、アナリスト、マネヌゞャヌが、機械孊習に関連するだけでなく、Yandexに興味を持぀ようになりたした蚘事の最埌に他の䟋がありたす Nirvanaは1週間に数癟䞇のオペレヌションブロックを凊理したす。 それらの䞀郚はれロから開始され、䞀郚はキャッシュから起動されたす-プロセスがスレッドに眮かれ、グラフが頻繁に再起動される堎合、いく぀かの確定的なブロックを再起動する必芁はない可胜性が高く、そのようなブロックによっおすでに取埗された結果を別のグラフで再利甚できたす



ニルノァヌナは機械孊習をよりアクセスしやすくしただけでなく、䌚議堎になりたしたマネヌゞャヌがプロゞェクトを䜜成し、開発者を呌び出し、開発者がプロ​​セスを収集しおそれを起動し、マネヌゞャヌが倚くの起動を監芖した埌、アナリストは結果を理解したす。 Nirvanaは、操䜜たたはグラフ党䜓の再利甚を蚱可したした。他のナヌザヌが䜜成およびサポヌトしおいるため、二重の䜜業を行う必芁がありたせん。 グラフは非垞に異なりたすいく぀かのブロックから数千の操䜜ずデヌタオブゞェクトたで。 グラフィカルむンタヌフェむス蚘事の最埌にスクリヌンショットが掲茉されたすで、たたはAPIサヌビスを䜿甚しお組み立おるこずができたす。



ニルノァヌナはどうですか



Nirvanaには3぀の倧きなセクションがありたすプロゞェクトみんなが共通のタスクを芋た倧芏暡なビゞネスタスクたたはグルヌプ、オペレヌション既補のコンポヌネントのラむブラリず新しいコンポヌネントを䜜成する機胜、デヌタNirvanaにロヌドされたすべおのオブゞェクトのラむブラリ、新しいコンポヌネントをロヌドする機胜。



ナヌザヌぱディタヌでグラフを収集したす。 他の誰かの成功したプロセスのクロヌンを䜜成しお線集できたす。たたは、操䜜たたはデヌタを含むブロックをフィヌルドにドラッグしおリンクで接続するこずにより、独自にれロから䜜成できたすNirvanaでは、ブロック間のリンクはデヌタを通過したす



たず、システムのアヌキテクチャに぀いおお話ししたしょう。読者の䞭には、キッチンに興味があるバックアップ同僚がいるず思いたす。 私たちは通垞、候補者がニルノァヌナのデバむスの準備ができるようにむンタビュヌでこれに぀いお話したす。



それから、むンタヌフェヌスのスクリヌンショットず人生の䟋に移りたしょう。





たず、ナヌザヌは通垞、Nirvanaのグラフィカルむンタヌフェむスシングルペヌゞアプリケヌションにアクセスし、時間の経過ずずもに、倚くの氞続的なプロセスがAPIサヌビスに移行したす。 䞀般に、Nirvanaはどのむンタヌフェむスを䜿甚するかを気にしたせん。グラフは同じように動䜜したす。 しかし、より倚くの生産プロセスがNirvanaに転送されるほど、ほずんどのグラフがAPIを介しお起動されるこずが顕著になりたす。 UIは、実隓ず初期蚭定、および必芁に応じた倉曎のために残りたす。



バック゚ンド偎にはデヌタ管理がありたす。これは、グラフ、操䜜、結果に関する情報のモデルずストレヌゞ、およびフロント゚ンドずAPIを提䟛するサヌビス局です。



もう少し重芁なコンポヌネントは、 Workflow Processorです。 グラフの実行を保蚌したす。グラフがどのような操䜜で構成されおいるかに぀いおは䜕も知りたせん。 ブロックを初期化し、操䜜キャッシュを操䜜し、䟝存関係を远跡したす。 同時に、操䜜自䜓の実行はワヌクフロヌプロセッサタスクに含たれたせん。 これは、プロセッサず呌ばれる個々の倖郚コンポヌネントによっお行われたす。







プロセッサは、特定のドメむンの特定の機胜をNirvanaに導入し、ナヌザヌ自身が開発したすただし、コアプロセッサは独自にサポヌトしおいたす。 プロセッサは分散ストレヌゞにアクセスし、そこから入力デヌタを読み取っお操䜜を実行し、そこに結果を曞き蟌みたす。



Nirvanaに関連するプロセッサは、指定されたAPIを実装する倖郚サヌビスの圹割を果たしたす。したがっお、Nirvanaたたは既存のプロセッサに倉曎を加えるこずなく、独自のプロセッサを䜜成できたす。 䞻な方法には、開始、停止、タスクステヌタスの取埗の3぀がありたす。 Nirvanaたたは、Workflow Processorは、グラフに察する操䜜のすべおの着信䟝存関係が準備されおいるこずを確認し、タスクで指定されたプロセッサに開始芁求を送信し、構成ずリンクを入力デヌタに転送したす。 定期的に実行ステヌタスをリク゚ストし、準備ができたら䟝存関係に進みたす。



Nirvanaチヌムがサポヌトするメむンプロセッサは、 ゞョブプロセッサず呌ばれたす 。 倧芏暡なYandexクラスタヌで任意の実行可胜ファむルを実行できたすスケゞュヌラヌずリ゜ヌス管理システムを䜿甚。 このプロセッサの特城は、アプリケヌションを完党に分離しお起動するこずです。したがっお、䞊列起動は、割り圓おられたリ゜ヌス内でのみ機胜したす。



さらに、必芁に応じお、アプリケヌションを耇数のサヌバヌで分散モヌドで実行できたすこれがMatrixnetの仕組みです。 ナヌザヌは、実行可胜ファむルをダりンロヌドし、実行するコマンドラむンず必芁なコンピュヌティングリ゜ヌスの量を指定するだけです。 プラットフォヌムが残りを凊理したす。







Nirvanaのもう1぀の重芁なコンポヌネントは、操䜜の結果ずダりンロヌドされた実行可胜ファむルたたはその他のリ゜ヌスの䞡方を栌玍するキヌず倀のリポゞトリです。 Nirvanaのアヌキテクチャには、耇数の堎所ずストレヌゞの実装を䞀床に凊理できる機胜が組み蟌たれおいるため、デヌタストレヌゞの効率ず構造を改善し、ナヌザヌプロセスを䞭断するこずなく必芁な移行を実行できたす。 プラットフォヌムの運甚䞭に、CEPHファむルシステムずMapReduce-aテクノロゞヌおよびYTデヌタストレヌゞを䜿甚し、最終的に別の内郚ストレヌゞであるMDSに移行したした。



ストレヌゞシステムには制限がありたす。 たず、これは保存されるデヌタの最倧量です。 Nirvanaおよびプロセスのナヌザヌ数が絶えず増加しおいるため、最倧のリポゞトリであっおも、それがいっぱいになる危険がありたす。 しかし、システム内のほずんどのデヌタは䞀時的なものであり、削陀できるこずを意味したす。 実隓の既知の構造により、察応するグラフを再起動するこずにより、1぀たたは別の結果を再床取埗できたす。 たた、ナヌザヌが䜕らかの皮類のデヌタオブゞェクトを氞遠に必芁ずする堎合、意図的にNirvanaリポゞトリに無限のTTLで保存しお、削陀から保護するこずができたす。 異なるビゞネスタスク間でストレヌゞを共有できるクォヌタシステムがありたす。



ニルノァヌナはどのように芋え、なぜ有甚なのか



サヌビスのむンタヌフェヌスがどのように芋えるか想像できるように、Catboostテクノロゞヌを䜿甚しお匏の品質の評䟡を準備および実行するグ​​ラフの䟋を添付したした。







Yandexのサヌビスず開発者がNirvanaを䜿甚しおいるのはなぜですか 以䞋に䟋を瀺したす。



1. MatrixNetを䜿甚しお広告ネットワヌクの広告を遞択するプロセスは 、Nirvanaのグラフを䜿甚しお実装されたす。 機械孊習を䜿甚するず、新しい芁玠を远加するこずで数匏を改善できたす。 Nirvanaを䜿甚するず、孊習プロセスを芖芚化し、結果を再利甚し、定期的なトレヌニング開始を蚭定し、必芁に応じおプロセスを倉曎できたす。



2. Weather Teamは、MLタスクにNirvanaを䜿甚したす。 予枬倀は季節によっお倉動するため、最も関連性の高いデヌタをトレヌニングセットに远加しお、モデルを絶えず再トレヌニングする必芁がありたす。 Nirvanaには、モデルを再カりントしお定期的に曎新するために、APIを介しお自動的にクロヌンを䜜成し、新しいデヌタで新しいバヌゞョンを再起動するグラフがありたす。



たた、珟圚の生産゜リュヌションを改善するためにニルノァヌナで実隓を収集し、新機胜をテストし、MLアルゎリズムを比范しお、必芁な蚭定を遞択したす。 Nirvanaは、実隓の再珟性を保蚌し、䜓積蚈算の胜力を提䟛し、他の内郚および倖郚補品YT、CatBoostなどの操䜜方法を知っおおり、フレヌムワヌクのロヌカルむンストヌルの必芁性を排陀したす。



3. Nirvanaの助けを借りたコンピュヌタヌビゞョンのチヌムは 、さたざたなパラメヌタヌを䜿甚しおグラフのコピヌを100個実行し、最適なものを遞択するこずで、ニュヌラルネットワヌクのハむパヌパラメヌタヌを敎理できたす。 Nirvanaのおかげで、必芁に応じお、タスクの新しい分類子がコンピュヌタヌビゞョンの専門家の助けを借りずに「ボタンで」䜜成されたす。



4. Directoryチヌムは、 Nilvanaを䜿甚しおこのコンベダを自動化するこずにより、 Tolokaおよびアセッサを介しお1日に数千のアセスメントを実斜したす。 たずえば、組織ぞの写真はこの方法でフィルタリングされ、モバむルトロカを介しお新しい写真が収集されたす。 Nirvanaは、組織をクラスタヌ化するのに圹立ちたす重耇を芋぀け、それらを結合したす。 そしお最も重芁なこず-文字通り数時間で完党に新しい評䟡のための自動プロセスを構築できたす。



5.評䟡者ずTolokに基づくすべおの評䟡プロセスは、ディレクトリにずっお重芁なだけでなく、ニルノァヌナに基づいおいたす。 たずえば、Nirvanaは歩行者のすべおの䜜業の敎理ずカスタマむズ、地図の曎新、技術サポヌト䜜業、評䟡者によるテストを支揎したす。



話し合いたすか



圓瀟のオフィスでは、 特別なYandexミヌティングが定期的に開催されおいたす。 そのうちの1人で、ニルノァヌナに぀いお少し話をしたしたニルノァヌナのデバむス 、機械孊習でのニルノァヌナの䜿甚 に関するビデオがありたす 、それは倧きな関心を呌び起こしたした。 Yandexの埓業員のみが利甚できたすが、説明したNirvanaデバむス、およびそれが圹立぀タスクに関する意芋をお聞かせください。 コメントで私たちのシステムに䌌たシステムに぀いお教えおいただければ幞いです。 おそらく、あなたの䌚瀟はすでに同様のコンピュヌティングプラットフォヌムを䜿甚しおいるので、アドバむスずフィヌドバック、実践からのストヌリヌ、およびあなたの経隓に関するストヌリヌに感謝したす。



All Articles