世界を動かす技術を、日本語で。

クラウドを借りるな、代わりに所有しよう

概要

  • comma 社は自社オフィス内に独自のデータセンターを運用
  • クラウド利用を避ける理由や自前運用の利点を解説
  • 電力・冷却・サーバー・ネットワーク構成の詳細紹介
  • ソフトウェア・ワークロード管理・分散学習・タスクスケジューラの運用例
  • 独自データセンター構築の現実的な方法とコストメリットの提案

commaの自社データセンター運用

  • 膨大な資金や政治的なコネ がなくても、自前データセンター構築は可能
  • comma 社は全モデル学習・メトリクス・データを自社オフィスのデータセンターで管理
  • 自前運用 によるエンジニアリング力の向上、コスト削減、独立性の確保
  • クラウド依存によるコスト高騰・ロックインリスク回避

クラウドを使わない理由

  • 計算資源がビジネスの中核 の場合、クラウド依存は大きなリスク
  • クラウドは簡単に始められるが、離脱が難しい
  • 自前運用 でコード最適化や根本的な問題解決が促進される
  • コスト面 で自前運用が圧倒的に有利(例:5Mドルで構築、クラウドなら25Mドル以上)

データセンター構成要素

  • 電力 :最大450kW消費、San Diegoの高コスト(40c/kWh)
  • 冷却 :外気冷却方式、CRACシステム不要、数十kWで運用
  • サーバー :自作TinyBox Pro(600GPU/75台)、Dellストレージ(R630/R730、合計4PB SSD)
  • ネットワーク :100Gbps Z9264Fスイッチ3台、Infinibandスイッチ2台
  • その他機器 :ルーター、気候制御、データ取込、メトリクス、Redisサーバー等

ソフトウェア・インフラ管理

  • OSインストール :PXEブート+Saltによる一元管理
  • 分散ストレージ :自作minikeyvalue(mkv)で3種類のストレージアレイを運用
    • メイントレーニング用(非冗長3PB/1TB/s読取)
    • 中間結果キャッシュ(非冗長300TB)
    • モデル・メトリクス保存用(冗長)
  • ワークロード管理 :Slurmによるジョブスケジューリング
  • 分散学習 :PyTorch FSDP+Infiniband、独自トレーニングフレームワーク
  • 実験管理 :独自ダッシュボード(WandBやTensorBoard類似)、mkv連携

分散タスク・推論インフラ

  • miniray :自作の軽量分散タスクスケジューラ(Daskの簡易版)
    • Pythonコードをアイドルマシンで並列実行
    • Redisでタスク情報管理
    • GPU搭載ワーカーはTriton Inference Serverを自動起動
  • NFSモノレポ :全コードを3GB以下のモノレポで管理、NFS経由で全分散ジョブに展開
    • 作業マシンのローカル変更も即時反映、パッケージ同期も自動化(2秒程度)

実際の運用例

  • on-policy学習 :最新モデルでシミュレーションロールアウトしながら訓練データ生成
  • シンプルなコマンド で全インフラを統合的に活用可能
  • 複雑な分散処理 も自前インフラで一元管理

独自データセンター構築のすすめ

  • 自社・個人でのデータセンター構築 は現実的かつ有益
  • コスト・技術・独立性の観点から強く推奨
  • 興味があればcomma.aiでの採用も案内

Harald Schäfer CTO @ comma.ai

Hackerたちの意見

データセンターには涼しくて乾燥した空気が必要?<45% いや、低すぎるのは良くないよ。冬に湿度が40%未満のデータセンターで働いてたけど、RAMがあちこちで故障してた。湿度が低いと静電気が発生するからね。

低いのは、湿度を戻すならいいけどね。45-50%を維持したいなら、環境湿度は<45%にして、上げられるようにするのがいいよ。静電気を避けるのは正しいけど、ある程度は一定に保ちたいよね。外気を使って冷却するのは、できれば安上がりだよ。

データセンターはサンディエゴにあるんだけど、ググったら外の湿度はほぼ50%を下回らないみたい。寒い地域だと冬には湿度が0%近くまで下がるから、状況は全然違うよね。

企業がクラウドが高くてもオンプレミスを選ばない理由は、オンプレミスのリスクが大きいからだよ。ここで見ると、いろんなステップが必要なのがわかる。良い会社なら、リスクを自社の差別化要因や競争優位性のある部分に集中させるはず。結局、「オンプレミスのコストがクラウドより安いかどうか」じゃなくて、リスク調整後のコストが重要なんだよね。リスクをメインの製品だけじゃなくてインフラにも分散させると、難しくなる。小さめの会社が自社でJiraを作るのはちょっと心配だな。

あと、運用費(オペックス)と資本支出(キャペックス)の問題もあって、運用費がほとんどの場合勝つんだよね。

でも、企業がオプションを比較してリスクを正しく評価するための社内の専門知識を持っているのか、ちょっと疑問に思ってきた。>良い会社なら、リスクを自社の差別化要因や競争優位性のある部分に集中させるはず。そうだけど、差別化要因の一つは常に価格だから、インフラプロバイダーにすべてのマージンを奪われたくないよね。

規模が大きくなれば(例えばcomma.aiみたいに)、たぶん安くなるけど、それまでは高い初期投資とリスクを伴う長期的なコスト最適化になるから、ほとんどのスタートアップにはあまり意味がないよ。遅い段階になって、ホスティングコストが大きな負担になるまではね。中間的な解決策もあるよ。仮想マシンを借りる代わりにベアメタルを借りるのは結構いい選択。数年前にHetznerでやったことがあるけど、ほぼ同じ金額でかなりのパフォーマンスが得られるんだ。パフォーマンスが必要ならこれは素晴らしいよ。みんなハードウェアにこだわるけど、ソフトウェアの側面も考慮しないとね。小さな会社では、オペレーションやDevOpsの人が管理するリソースよりも高くつくことが多いよ。最適化するためのコストはそのコストなんだ。ホスティングコストは通常、スタッフコストの端数に過ぎないし、ハードウェアを所有すると責任が増えるよ。メンテナンスしたり、監視したり、故障したら交換したり、ファンがホコリで詰まらないようにしたり、障害が発生したときの対処も必要だしね。今までクラウドプロバイダーに頼んでいたことが、自分の問題になるんだ。それにはゼロではないコストがかかるよ。ホスティングコストを考えるときは、FTE(フルタイム従業員の年間コスト)で考えるのがいいよ。1未満なら(ほとんどのスタートアップはスケールアップの段階に入るまで)、うまくいってるってこと。最適化にかかるコストは、実際にその作業をするのにかかるFTEに影響するからね。1 FTEでかなりのホスティングが賄えるよ。AWSのコストで月10Kくらい考えてみて。良いオペレーション担当者や開発者はそれ以上のコストがかかるから。うちの会社は月1Kくらいで運営してる(GCPとその他のマネージドサービス)。それを最適化するのは間違いだよ。私にとっては、時間をかける価値がない。もっと価値のあることをやるべきだからね。ホスティングにかかるコストが月に複数のFTEになると、状況は変わるよ。その時点で、スタッフのコストも5-10 FTE分はかかるから、すべてを見守る必要があるんだ。だから、ホスティングのFTEを少し余分なスタッフのFTEとトレードオフして、ネットの利益を得ることができるようになるんだ。

たくさんのことに関して、フルタイムの従業員を雇う代わりにサービス契約を利用できることを忘れないでね。通常はかなり安く済むし、小さな会社には特に理にかなっているよ。

しかも、ただのFTEじゃなくて、たぶんもっと高いコストがかかるシニアやスタッフレベルのエンジニアが必要になるだろうね。

あなたの計算は、いくつかの高性能サーバーを維持するためにFTEが必要だと仮定しているね。でも、一度サーバーが動き出したら、その従業員は月に数時間しか使わないはず。もしかしたら半年に数時間かもしれない。一方で、AWSに完全に依存するなら、クラウドに慣れた人がほぼ同じ時間を必要とすることを無視してるよね。結局、どちらの従業員の追加コストもゼロだと思うよ。

公平に言うと、人々は自分たちがやるべき仕事や必要なパワーを過大評価していると思う。確かに、大規模にスケールアップする必要があるなら、いくらかの作業が必要だけど、そのほとんどは一度きりの作業だよ。それをやってしまえば、次の数ヶ月は維持するための作業はほんの少しだけ。具体的には5%未満だよ。そして、"ああ、私たちはこのクラウドが必要だ、スケールするから"って考えるスタートアップの99%以上は、実際にはスケールしないことを忘れないで。結局、彼らはクラウドサービスに自ら閉じ込められてしまう。もし実際にスケールすることがあったとしても、そのサービスはものすごく高くつくことになるよ。

スケールが大きくなると(comma.aiのように)、たぶん安くなる。でもそれまでは、非常に高い初期資本支出とリスクを伴う長期的なコスト最適化になるから、ほとんどのスタートアップ企業にはあまり意味がないと思う。彼らが後期段階になって、ホスティングコストが実際に大きな負担になるまで。データスペースをレンタルするのはOPEXであってCAPEXではなく、サーバーをリースすることで大きなCAPEXを月々のOPEXの請求に変える。自分のデータセンターを運営するのは「サーバーが二十数ラックある」という取り組みだけど、データセンターのスペースを借りてサーバーを購入するだけでも、クラウドから同じレベルのパフォーマンスを得るよりずっと安い。> これが、ホスティングだけで月に複数のFTEが必要になると逆転する。その時点で、すでにそのすべてを見守るために5-10 FTEの追加コストがかかるだろうから。だから、ホスティングのFTEを少しの追加スタッフのFTEとトレードオフして、ネットの利益を得ることができる。クラウドを管理するためにもその人たちが必要だよ。それが計算でいつも無視されるところで、人々は「データセンターをカバーするために2-3人のオペレーションスタッフが必要だ」と言うけど、クラウドでも同じことが必要で、プログラマーやDevOpsのチームに負担がかかるだけなんだ。私たちは数ラック持っていて、ハードウェアに関する部分は全体の作業負荷の小さな部分で、ほとんどはクラウドの顧客のためにやっていることと同じで、自動化のためのマニフェストを書くことだよ。

ほとんどのスタートアップ企業にはあまり意味がない これについてTFAが言っていることはこうだ: > クラウド企業は一般的にオンボーディングを非常に簡単にし、オフボーディングを非常に難しくする。注意を怠ると、高いクラウドコストに陥り、抜け出せなくなる。彼らが正しいと思う。始め方に気をつけないと、初期の状況に長い間縛られることになるかもしれない。

オンプレミスのハードウェアとクラウドコンピューティングの両方を使うのがいいと思う。たぶん、commaもそうしてるんじゃないかな。重要なインフラについては、信頼性の問題を自分で抱えるより、優秀なクラウドプロバイダーにお金を払った方がいいと思う。ヘッドクォーターにサーバールームを一つ持つのはいいけど、異なる場所に二つのサーバールームを持って、耐障害性のある電源やネットワークを整えるのはちょっと大変だと思う。多くのslurmジョブを良いサーバーで動かすのはクラウドだとすごく高くつくし、数ヶ月でお金を節約できることもあるよね。サーバールームが完全にダメになったとしても、最悪の場合はもう少しYAMLやTerraformを書いて、クラウドに一時的な代替をデプロイすればいいだけだし。あと、コロケーションっていうのもあって、自分のハードウェアを管理されたデータセンターに置く方法もある。ちょっと古い考えかもしれないけど、場合によっては意味があるかも。研究用のHPCも考慮する価値があるかもしれない。研究では、クラウドコンピューティングのコストのごく一部で世界最速のコンピュータを使えるからね。root権限がなくてslurmを使わなきゃいけないのが気にならなければ、すごくいいよ。アメリカではどうかわからないけど、ノルウェーでは自分の会社のslurm AIワークロードを研究用HPCで動かせるけど、大学や研究機関よりはかなり高くつくよ。でも、大学や研究機関と共同で研究プロジェクトを持つこともできるし、そのコラボレーションからビジネスが大きく利益を得られれば、みんなハッピーだよ。

優秀なクラウドプロバイダーにお金を払った方が、信頼性の問題を抱えるよりいい。どうしてこんなに多くの開発者やシステム管理者が、ホスティングサービスに自信がないと思ってるんだろう。思っているよりずっと簡単だし、技術的な問題を解決するのも楽しいよ。

本社にサーバールームを一つ維持するのは大変だけど、異なる場所に2つのサーバールームを持って、耐障害性のある電源とネットワークを確保するのはちょっと手間がかかりすぎると思う。これをやってる人として言わせてもらうと、実際はすごくシンプルだよ。EquinixやGlobal Switchみたいなところからスペースを借りれば、かなりリーズナブルな価格で済むし、電源や冷却、ケーブルの管理も彼らがやってくれるから。

異なる場所に2つのサーバールームを持って、耐障害性のある電源とネットワークを確保するのはちょっと手間がかかりすぎると思う。イタリアの2つの異なる地域にある会社で、実質的にメインとバックアップの2つのサーバーファームを持ってたけど、5人の社員でそれを管理してた。彼らのことは知らなかったし、名前も知らなかったけど、ほぼ100%の稼働率と素晴らしいパフォーマンスを誇ってた。40人の開発者の中で、デプロイの主な責任を持ってたのは1人だけ。それで、サーバーファームを運営するのに年間80万ユーロかかってたけど、クラウドコストで700万から800万ユーロ節約できた。今は、出力やトラフィックのわりに何百万もクラウドに使ってるクライアントのために働いてて、15人以上のDevOpsエンジニアを雇ってると思う。

自立は素晴らしいけど、自分のコンピュータを運用することには他にもメリットがある。良いエンジニアリングを刺激するんだ。最初から優秀なエンジニアがいると、人を刺激するのは簡単だよね。comma.aiのような場所ではそれが当たり前だけど、データセンターの管理がコアコンピタンスを超えている会社もたくさんあると思う。スキルのあるエンジニアは、クラウド企業のトレードオフを理解するのが難しいと感じることがある。comma.aiの従業員が社内の食堂を持っていないのと同じように、自分が得意なことに集中して、残りはアウトソースするのが理にかなっているかもしれない。

これは私たちの業界だよ。所有は一つの極端で、クラウドはその反対側、そしてその間にはいくつかの選択肢がある。1 - クラウド – これは資本支出、雇用、リスクを最小限に抑えつつ、運用コストを最大化する(高いし)し、コストの変動も大きい(使用量に基づく)。2 - マネージドプライベートクラウド - これが私たちのやっていること。資本支出はほとんどなく、雇用やリスクも最小限で、運用コストは中程度(AWSなどより約50%安い)。私たちはベアメタルをレンタルまたはコロケートし、管理し、ソフトウェアのデプロイを行い、オープンソースのみをデプロイするなどしている。月に€$5k以上の支出がある場合にのみ、本当に意味がある。3 - レンタルベアメタル – 他の誰かにハードウェアの資金調達を任せる。資本支出は最小限だけど、雇用やスキル、リスクは増える。AWSなどより約90%安い(時間も含めて)。4 - 自分でハードウェアを購入してコロケートする – スキル、スケール、資本支出があり、少なくとも3-5年間サーバーを運用する予定があるなら、確かに最も安い選択肢だ。オプション3に適したプロバイダーは、Hetznerのようなところだね。彼らのサーバーハードウェアの内部ROIは約3年のようだ。その後は、クライアントと一緒にまだ稼働しているか、サーバーオークションシステムに入ると思う。オプション3と4は、スケールが大きくなるか、インフラがコアビジネスの一部になると、一般的に魅力的になる。オプション1は、初期投資を非常に少なく抑えたいスタートアップには最適だけど、その後すぐに急成長することが求められる。オプション2は、基準負荷があり、通常のビジネス成長があり、もしかしたら過労のDevOpsチームがいる中小企業にはかなり良い。

5つのポイントが抜けてるね。Equinixのデータセンターでキャビネットを借りるのと、自分で運営するのでは全然違うから。

DevOpsチームにNixを知ってる人がいれば、選択肢3は時間的にかなり安くなるよ!Nix flakesはメンテナンスが必要だけど、特にnixos-unstableブランチではね。でも、最も早いディザスターリカバリーができるのがメリット!それに、インフラの柔軟性があれば、Cloudflare Workersみたいなランダムな制約がなくなるし。

これが90年代から2000年代中頃にやってたことだね。> 自分でハードウェアを買ってコロケーションする – スキルがあれば確かに一番安い選択肢だった。当時はこの手の「スキル」が豊富にあったから、データセンターにドライブを交換しに行くシステム管理者の契約者を簡単に見つけられた。彼らはバックアップやネットワーキング、ファイアウォールをカバーして、ハードウェアの調達もできるフルスタックだったんだ。この考え方は高すぎるって言われて、クラウドの方がいいってなった。だから何十万もの中小企業がクラウドを受け入れたけど、大半はGoogleみたいなスケールは必要なかったのに、SaaSの「定期収入」のグリフトに引き込まれた。これに反対するのは「うちの会社はこんなにスケールしない」って言ってるようなもので、最良でも「有害」、最悪は「キャリアを終わらせる」ことだった。だけど、これらの古いスキルは今でも存在するし、ほとんどの組織はAWSのようなスケールは必要ない。ヨーロッパの組織はこの基本的なアイデアを再考するべきだと思う。HetznerやLithusは、これらの企業にとってもっと自然で誠実な選択肢になるだろうね。

Hetznerは確かに面白い選択肢だね。自分でサービスを管理するのはちょっと怖いけど(PostgresとかSite2Site VPNとか…)、価格差が魅力的なんだよね。うちの財務モデルから見ると、インフラに月10万〜15万ドル以上使うなら、HetznerはAWSに勝てるかも。リスクはあるけど、確実に価値のあるリスクだと思う。

Kubernetes用にHetzner Cloudを使ってるけど、全体的には好きなんだ。ただ、限界もある。ネットワークがかなり不安定で、最高でも2Gbit/s、最悪だと数百Mbit/sになることもあるよ。 https://docs.hetzner.com/cloud/technical-details/faq/#what-k...

Hetznerの上限ってどのくらいなんだろう?AWSの請求が数億ドルになる場合、Hetznerはその規模を現実的に受け入れられるのかな?

クラウド企業は一般的にオンボーディングはすごく簡単だけど、オフボーディングはすごく難しい。注意を怠ると、高いクラウドコストに悩まされて、抜け出せなくなるよ。自分の運命をコントロールしたいなら、自分でコンピュートを運営しなきゃ。コストやロックインは明らかだけど、「主権」もセールスサイクルで重要な要素になってきてる、特にヨーロッパではね。健康データを扱うJuvolyは、オンプレミスでAIのワークロードを運営するのが得意だよ。

私が働いている会社は、95%がオンプレミスだったハイブリッドを持ってたけど、VMwareのライセンスのせいでオンプレが高くつくようになって、クラウドが90%に近づいた。VMwareの代替品はあるけど、うちのハードウェア構成では公式にサポートされてないから、全てのハードウェアを変更する必要があって、それがクラウドよりも高くつく。ほとんどのものがクラウドに依存しないし、耐障害性が必要なものは2つの異なるプロバイダーに置いてる。今、会社はオンプレで運営するために借りている建物がほとんど使われていないから、さらなるコスト削減を考えてるけど、最近は建物の価格も上がってきてるから、クラウドに移行することでお金を節約できる可能性が高い。これでクラウド移行が永続的になるかもしれないね。

データセンターを維持することは、実際の課題を解決することにもっと関係してる。クラウドは会社特有のAPIや請求システムの専門知識を必要とする。データセンターはワットやビット、FLOPの知識が必要だよ。どちらを考えたいかは明らかだね。これって小規模でも当てはまると思う!さまざまなプロプライエタリなクラウドAPIやインターフェースをいじるより、SSHを使ってパワフルなLinux VPSをセットアップしてデバッグする方がいいな。ワットやビット、FLOPほど低レベルではないけど、Linuxの知識はAzureの設定を知るよりも価値があると思ってる。

インセンティブについての観察はあまり評価されてないね。コンピュートが固定されてると、エンジニアはコードを最適化する。コンピュートが予算の一部になると、エンジニアはスライドデッキを最適化する。これはクラウド対オンプレミスの議論じゃなくて、エンジニアリングの心理学の話だよ。