手元の Mac には NVIDIA GPU が無い。そこで同じ LAN にある Windows の GPU マシン (RTX) に Mac から SSH して、3D 生成や言語モデルの学習を回す構成にした。
クラウド GPU を借りずに済むので費用はゼロ。ただし Windows への SSH は Mac や Linux の感覚で入ると罠が多い。
実測の性能差と、ハマった罠 4 つの解決を書く。
手元の Mac には NVIDIA GPU が無い。同じ LAN にある Windows の GPU マシン (RTX) に Mac から SSH して、3D 生成や言語モデルの学習を回す構成にした。クラウド GPU を借りないので費用ゼロ。
効果は実測で大きい。小型言語モデルの学習は Mac (mps) の約 33 倍の速度が出た (76.4K tokens/s)。画像→3D の生成も 1 体 231 秒で回る。
ただし Windows への SSH は罠が多い。ハマった順に書く。
罠 1: 管理者ユーザーの公開鍵は authorized_keys に置いても効かない
Windows の OpenSSH は、管理者グループのユーザーだけ公開鍵の置き場所が違う。ユーザーの ~/.ssh/authorized_keys ではなく:
C:\ProgramData\ssh\administrators_authorized_keys
ここに置かないと鍵認証が通らない。知らないと「鍵を置いたのにパスワードを聞かれる」で延々ハマる。
罠 2: 日本語出力は PowerShell 越しに読むと必ず文字化けする
SSH 経由で日本語を含む出力を読むと cp932 で化ける。コマンド側の工夫では安定しなかった。解決は出力を読む場所を変える:
- スクリプト側で結果を UTF-8 のファイルに書く
- そのファイルを scp で Mac に持ち帰って読む
長い日本語コマンドを送る時は、UTF-16LE で base64 にして powershell -EncodedCommand に渡すと化けない。
罠 3: 長時間処理の stdout は終了までバッファされる
SSH 直実行だと、学習のような長時間処理の標準出力が終了までまとめてしか見えない。進捗は stdout でなく成果物のファイルサイズを別セッションから poll して見る。Start-Process のリダイレクトは空ログになる事があり信用しない。
罠 4: Hugging Face の大きいファイルが 0 バイトで固着する
モデルの重み (数 GB の LFS ファイル) のダウンロードが 0 バイトのまま進まなくなった。小さい設定ファイルは落ちてくるので、回線やリポジトリを疑って時間を溶かした。真犯人は転送バックエンドの不具合で、環境変数での無効化も効かなかった。
解決は HF のダウンローダーを使うのをやめること:
- 必要なファイルだけ
curl -Lで直ダウンロード - モデル読み込みをローカルパス参照にして、オフライン系の環境変数 (HF_HUB_OFFLINE など) を立てる
まとめ
- 管理者の公開鍵は administrators_authorized_keys
- 日本語は UTF-8 ファイルに書いて scp で持ち帰る
- 進捗は stdout でなく成果物サイズを poll
- HF のダウンロードが 0 バイト固着したら curl 直落とし + ローカル読みに切り替える
コメント (0)
まだコメントなし。