こんにちは、毎日頑張っているものです。最近忘れっぽいので、備忘録に書かせてください。
皆さんが使っているソフトウェアの背後にはハードウェアがあります。最近ではクラウドが流行ってますので背景にハードの苦労があることなんか忘れられてますね。しかし世界の時価総額ランキングをみてもらうとサーバーデータセンターや物流倉庫、スマートフォンデバイスやGPUハードウェアなど、単純にソフトウェアだけでなくきちんと設備投資をしている会社が上位です。
弊社でも数年前からハードウェアを自社購入してあたふたしています。具体的にはGPUマシンを購入してます。マシンスペックと事業の組み合わせ等多岐にわたるため、数年たってもかなり大変です。
まず、個人としては前職でCGをやっていたので自作マシンになれていました。多くの人が直面すると思いますが、自作のGPUマシンとサーバーラック格納を使い分けるかと。
個人で利用する場合には、ケースを買ってマザーボードを買って、CPUを買ってつけて、ファンを買ってつけて、メモリとSSDを買ってつけて、GPUを買ってつけて動かします。
普通に使うにはOSはWindowsが便利かもしれませんが、私たちは仕事ではlinuxをいれていてその点は比較的管理が楽です。
個人利用のマシンでは、値段とスペックの割合を考えて、部屋におけるサイズや熱や騒音を考えます。
業務用ではもちろん居室におかざるを得ない会社は個人の延長で考えれば良いかと。業務できちんと部屋が準備できる場合は、騒音や熱はまたべつの問題に。画面やキーボードなども基本つながなくて良いので楽です。
個人や簡易的な企業ユースではGPUの選択肢はPCIeと呼ばれるスロットに指すかたちになります。CPU,SSD,メモリ容量などの他にPCIeの転送速度なとがパフォーマンスに影響してきます。LLM等をしたい場合はGPUの速度とVRAM容量がかなり重要になります。おそらく市販品でのVRAM12Gや24G辺りが大きな選択の分かれ目になるでしょう。
業務でそのようなマシンをサーバーやワークステーションとして運用する場合、IPMIと呼ばれるマザーボードに付属させる小さいマシンのようなもので電源のオンオフやOSインストールまで管理ができます。
サーバーとして運用する場合には画面が不要なので軽くてすみます。また、サービス提供はSSHではいってセットアップをして、ポートと呼ばれる外部との通信窓口を設定してやりとりをします。キーボードマウスや画面をつけなくて良いので、SSH等で繋いで管理します。ちなみにキーボードと画面はセットアップ時だけ繋いで管理して、キャスター付きの机を用意してます。
GPUを利用したサービスの場合、外部提供用のポートの数も重要になります。一枚のマザーボードで例えば、市販品ですと2枚ざしといって、2枚GPUをさせます。同じマザーボード上で複数のGPUを連動して使う場合、ポートはひとつですみますが、VRAMを利用して例えば2枚別々にサービス提供したい場合は、ポートをそれぞれ開けることができます。もちろんポートひとつで2枚を管理できなくないですが、片方が故障した場合にめんどくなるので、簡単にするために別々のプログラムなどを起動して走らせます。
この場合、SSHのポートが1で、GPU向けが2になります。
サービス内容によってはCPUやメモリ、ストレージをあまり使わないものもあります。その場合はやはり1システムに1GPUを配置するよりも、1システムに2GPUおいてしまった方が、SSHのポートと、システムの電気代も節約できます。利用の負荷に合わせた設計にするのに色々トライアルが必要です。
市販品でPCIeで4とか8スロットのものを見つけるのは大変です。ランニングが節約できてもイニシャルが跳ね上がることもあるので、そこも慎重な設計が必要です。コンシューマやワークステーションはPCIe接続基本なので、自由に試して自分に合った環境を探すのが大事ですし、なかなか根気とお金もかかります。
ネットワークもシステムごとにポートの割り当てがあり、マシンごとにサービス提供、メンテナンス用などいくつか用意しなくては行けません。外部向けのSSHのポートなどは外部からの割り当てをマッピングし直さないと行けない手間と、なるべくセキュリティ的に増やしたくないので踏み台などのログインサーバーを用意するなどが良いかと思います。
ネットワークを考えてもGPUマシンの最適構成が変わってきます。台数増えるともうワケわからなくなりますので。。。ですので、なれてきてPCIeで構成が変えられるうちは、前処理、後処理のバランスをCPUやメモリを考慮しGPUの負荷、ネットワークの構成などを加味して管理手間やコストを最適化できます。
コンシューマやワークステーションよりさらに進めると、業務用のサーバーに。サーバーはベアボーンと呼ばれる一定のパーツが組まれたものを買うか完成品を買います。サーバールームはラックといってサイズ規格が決まってます。コストの関係で密度が高い方が効率的に運用できます。
最近は自作pcでもベアボーンがあります。コンシューマのマザボと違うのがエアフローで基本高さがあまりとれません。CPU等にはヒートシンクがついてます。ルールとして前面から空気を吸い込み、背面に吐き出すというのが徹底してます。コンシューマのヒートシンクは大体ファンがセットになってますが、ファンはべつ添えで前から後ろにとにかく風を送ることに徹底してます。コンシューマのケースは比較的スペースに余裕があるので、何となく前からとって、CPUは何となく上から吹き付けて、何となく背後のファンではい熱してます。業務用は徹底してます。
ベアボーンでも大体GPUはPCIeです。高さがとれないのでライザーカードと呼ばれる、延長ケーブルでGPUを寝かせたり配置を変えて格納します。基本構成は普通のコンシューマと変わりませんが、空冷の場合はエアフローがことなるため設計が少し変わってます。ベアボーンとコンシューマはやはり構成や勝手が少しことなるので、基本構成は似てても少しノウハウの入れ換えはあります。
コンシューママシンは定常的な負荷にたいしてサーバーのような高密度な利用は想定されていないので、電力消費を含めて、定常的に安定して故障なく動かすサーバーは電力も押さえ目で、スペックにも制限が多いです。値段も高いです。コンシューマから少しずつスペックアップして、業務用に行く場合構成になれながらスペックを決めていく必要があります。
ある程度決まると最後は完成品としてのサーバーでGPU等のチップが基盤組み込みになってます。調達の金額も大きいし、ランニングのコストや手間もかかるので、スペックや用途が決まってから利用するのがおすすめです。GPUサーバーはとにかく電力消費がすごいので、8枚搭載されたマシンなどは電源の確保が難しいです。また、熱が出るため、ヒートシンクが巨大になり、4U,6Uといった大型筐体になります。重さもすごくてサーバーラックへの搭載もきちんとリフターなど考慮しないと怪我します。
ラック辺りの電力量も決まってるので、よくみるサーバーの写真だと4U,6U筐体がラック辺り2台程度というのもおおいかと。空調などにも限界があるので、消費電力の単位でみることも多いです。
最近の水冷などはヒートシンクの変わりにコールドプレートと呼ばれる仕組みで熱を冷媒に移して冷却するので、高さを押さえられます。その代わり、さらにラック辺りのマシンの密度が高くなるので、単位重量もかなり上がることに。データセンターの床荷重の設計からの見直しが必要です。
GPUがくみこまれたきょうたいだと、GPU同士は大体高速なインターフェースで繋がれていて、そもそも従来のGPUの定義にあるようなグラフィックスを扱わないので外部出力端子などもありません。内部で計算が完結します。内部の高速なインターフェースで複数のGPUを連動させてもよし、前に書いたように8台をそれぞれ管理して別々に動かしてもよし。さらに最近はひとつのGPUをさらに分割して利用などもあるので構成案はかなりひろがります。
GPUの管理に関して単におくだけならお金を書ければよいですが、サービスとしてよりやすく運用するにはまた別の苦労も必要で、なかなかノウハウこれからの分野なので毎日働いて頑張るしかないですね。
以上です。