古いPCでM.2 SSD(NVMe)を利用する
現在使用しているデスクトップPCは非常に古い世代(Ivy Bridge)の物ですが、少し前にRTX2060(12GB)に入れ替えた事で、普段の用途ではまだまだ問題無く使用出来ています。またRTX2060にした事で、生成AI(Stable Diffusion)用途でも十分実用になっています。
SSDの容量不足
最近、Stable Diffusionによる画像生成を覚え始めていますが、特にモデル(checkpoint)が1つで数GBあるので、接続しているSSD(SATA 6Gbps)の容量不足になってきました。まずは増設を考えましたが、既にマザーボード上の接続ポートに空きが無く、既存SSDとの入れ替えもなんだか面倒。またStable Diffusion起動に少々時間が掛かる事から、M.2(NVMe)のSSDを追加する事にしました。
ただし古い世代のPCの為、当然M.2用スロットはありません。そこでPCI-ExpressにM.2スロット増設用の拡張ボードを接続して、M.2のSSDを増設する事にしました。※以下、ここでの「SSD」はNVMeのSSDとします。
注記
古いPCに拡張ボードでM.2のSSDを増設しても、「起動用」としては利用出来ません。メーカーが対応BIOSを公開していれば別ですが、それ以外ではBIOSの改造や、SATA接続のデバイスでブートさせてからSSDを認識、その後にSSDからOSを起動する方法などもある様ですが、リスクや手間が掛かります。
PCI-Express
使用しているPCのマザーボードはmicroATXでチップセットは「Z77」。PCI-Expressのスロットは「3.0×16」が2つ、「2.0×1」が2つ。「3.0×16」は先のRTXで1つ使用済みなので空きは1つ。「2.0×1」は未使用です。今回は「3.0」側の空き側にM.2の拡張ボードを接続しようと思いますが、以下、個人的に考慮すべき点がありました。
まず、マザーボードのPCI-Express「3.0×16」のレーン数は、2つのスロットを利用する場合は共に「x8」となる事。現状でRTXを利用していますが、これが「x8」になってしまいます。ただし「x8」であってもそれほど影響は無い模様(Impress記事)。しかし参考としたImpress記事が2017年当時の内容なので、現在のグラフィックボードでは影響が増えるかもしれない。現状、RTXでは温度によるリミッターを入れているので、その程度は…?ちなみにRTX2060はPCI-Express「3.0」接続、RTX30xxになると「4.0」になります。
次に現在のPCI-Expressは「4.0」、さらに「5.0」まで出て来ていますが、SSD(NVMe)側は「3.0」がまだまだ主流(3.0×4)の印象で速度も「3.0」で十分。何より安価。
最後にM.2の拡張ボードを接続した場合、RTXの直下となるので、冷却ファンを塞いでしまう?しかしグラフィックボードの「2枚刺し」を考えれば、心配する必要は無さそう。
購入したSSDと拡張ボード
考慮の結果、グラフィックボードの性能低下が懸念されますが、やはり「3.0×16」の空き側に「x4」の拡張ボードを追加する事にしました。
SSDは「fanxiang」というブランドの製品を購入しました。仕様は「3.0×4」でAmazonでの評価では速度も出ている様子。固定用ネジとドライバー工具も付属しています。※上記のヒートシンクは拡張ボード側の付属品です。
拡張ボードは「GLOTRENDS」ブランドで、PCI-Express「4.0」にも対応する製品。端子は「x4」形式ですが、PCI-Expressは基本的に大は小を兼ねるので「x16」にも接続出来ます。SSD用のヒートシンクの他、固定用ネジ、ドライバー工具、ロープロファイルブラケットも付属しています。
SSDの容量は256GBと小容量にしましたが、今回はStable Diffusion専用で安価に済ませる事にしました。SSDと拡張ボードで合計約5,000円(SSDが3,500円、拡張ボード1,500円・共にAmazonにて)でした。
取り付け・問題発覚
SSDにヒートシンクを取り付けて拡張ボードに接続し、PCの「x16」スロットに取り付けました。拡張ボードは小さいので、少々心配だったRTXのファンとの兼ね合いも問題は無さそうです。PCの電源を入れると、拡張ボード上のLEDが点灯しました。
Windows上では特にインストール作業は不要で、「ディスクの管理」で追加したSSDのフォーマットを行うだけとの事ですが、一向に追加したSSDが表示されません。またデバイスマネージャー上でもSSDや拡張ボードがありませんでした。
BIOS上では必要となる設定も特になく、RTX側のスロットと入れ替えてみると、今度はRTXが認識されず(画面出力無し)。SSDや拡張ボードの不良、そもそもマザーボード側の不良と可能性が色々とある中でネットを調べていたところ、こんな情報(日経XTECH)が。どうやら複数の「x16」スロットを搭載するマザーボードで、自動でレーン数を切り替える場合は、片方がx4やx8ボードだと「x8x8」にならず無効のままになってしまう場合があるとの事…。どうやら、これに当たってしまった様子。
「2.0×1」に変更
仕方が無いので、「x1」形式の拡張ボードを買い直しました。先に購入した「GLOTRENDS」ブランドにも「x1」仕様はありますが、今回はノーブランドで格安の拡張ボードです。楽天で送料込み1,000円でした。
「x1」スロットに取り付けました。1段下になるのでRTXとのすき間も十分あります。PCの電源を入れると、こちらも拡張ボード上のLEDが点灯しました。
デバイスマネージャーで見ると、SSDと拡張ボードがそれぞれ認識されています。「ディスクの管理」にもSSDが表示され、フォーマット後に無事使用可能となりました…が。
マザーボードの「x1」スロットは「2.0」。仕様上の速度は「500Mb/s」なので、追加したSSDでベンチを取ると上記の通り。「3.0×4」であれば仕様上「約3.9GB/s」で今回のSSDでも3GB/s程度は出るそうです。1/6以下になってしまいました。
ちなみに上記は「SATA 6Gbps」に接続しているSSD(INTEL製)です。こちらは仕様上「600Mb/s」なので「2.0×1」とほぼ同程度?
「x16」の拡張ボードでは?
「x1」の拡張ボードを購入する前に、「x16」の拡張ボードなら「x8x8」で認識する?と思い、「x16」のM.2増設用拡張ボードも探してみました。接続速度の仕様が「x4」で端子部(形状)が「x16」という物がありましたが、当然基盤のパターンは「x4」まで、それ以上はダミー端子といった物でした。これではやはりマザーボード側で「x8x8」で認識する可能性は低いと想像し、素直に「x1」を購入しました。それでも2,000円弱だったので試してみても良かったのですが、使えない拡張ボードが増えても仕方が無いので…。
その他
結局、速度面では期待していた性能は得られませんでしたが、既存の「SATA 6Gbps」程度には出ているので良しとします。結果的には「USB3.0(USB 3.1&3.2 Gen 1)」も仕様上では「500MB/s」なので、USB型のSSDでも良かった気がします。