接続・移行・トラブルシューティング

クラウドMacを既存のワークフローに組み込む

まずコンソールでノードと接続情報を確認し、SSHまたはVNCで初回セッションを確立します。移行、ビルド、MLXサービスで問題が起きたら、本ページの順序に沿って原因を絞り込みましょう。

3段階
接続・移行・連携
2種類の接続方法
SSHとVNC
365日
ノードは常時稼働
初回接続ランブック VMKeep / CONNECT
確認待ち
01
アカウントと注文

注文ステータス、ノードリージョン、マシン名、契約期間が一致していることを確認します。

コンソール
02
接続情報

ホストアドレス、ユーザー名、仮パスワードをコピーし、関係者以外に転送しないでください。

SSH / VNC
03
認証情報の更新

初回接続後にパスワードを更新し、チームで使用するSSH公開鍵を追加します。

必須
04
ベースライン確認

macOS、Xcode、ディスク容量、ネットワーク接続の結果を記録します。

推奨
問い合わせ前にコマンド出力と発生時刻を保存 RUNBOOK-04
初回接続の流れ

再現可能な接続ベースラインを確立する

いきなりリポジトリを移行したり、大量の依存関係をインストールしたりしないでください。まず4項目を確認し、マシンの識別、接続方法、認証情報の更新が正常に行えることを確認します。

  1. 01 アカウント確認

    コンソール情報を確認

    コンソールにログインし、注文番号、ノードリージョン、マシン名、契約期間、接続情報を確認します。ノードと注文が一致しない場合は作業を止め、誤ったマシンへファイルを移行しないようにします。

    • 注文番号とノードリージョンを記録
    • マシン名と契約期間を確認
    • 接続情報はコンソールからのみ取得
  2. 02 セッションを確立

    SSHまたはVNCを選択

    コマンドライン設定、自動化、ログ確認にはSSHを優先します。グラフィカルインターフェース、Xcode設定、デスクトップ操作が必要な場合はVNCを使用します。初回接続では両方を一度ずつ確認することをおすすめします。

    • SSHでホストフィンガープリントとユーザー名を確認
    • VNCでアドレスと表示解像度を確認
    • 接続に成功したネットワーク環境を記録
  3. 03 認証情報を更新

    パスワードを変更し、公開鍵を登録

    マシンに入ったらすぐに仮パスワードを更新し、チームで承認されたSSH公開鍵を認証済みリストに登録します。鍵はメンバーごとに分け、プロジェクトを離れる際は個別に無効化します。

    • 十分な長さの専用パスワードを使用
    • メンバーごとに個別の公開鍵を保持
    • 秘密鍵と接続情報の配布範囲を制限
  4. 04 ベースラインを記録

    システムとディスクの状態を確認

    ツールをインストールする前に、システムバージョン、Xcodeのパス、空きディスク容量、基本的なネットワーク結果を記録します。後のトラブルはこのベースラインと直接比較できます。

    • sw_vers システムバージョンを確認
    • xcode-select -p ツールチェーンのパスを確認
    • df -h ディスク容量を確認
移行の流れ

ローカルMacからクラウドMacへ、3回に分けて移行

移行の順序がトラブルシューティングのコストを左右します。まず検証可能なデータを移し、次に固定バージョンのツールチェーンを復元し、最後にCIまたはself-hosted runnerを接続します。

01
データ同期

必要なファイルだけを移行

まずGitでコードリポジトリを取得します。大容量モデル、ビルドキャッシュ、成果物は個別に同期し、転送後にファイルサイズまたはチェックサムを確認します。

入力
リポジトリ、モデルファイル、スクリプト、必要な設定
確認
ディレクトリ権限、無視ルール、空きディスク容量
成果物
単独で検証できるプロジェクト作業コピー
02
ツールチェーンの復元

Xcodeと依存関係のバージョンを固定

プロジェクトで必要なXcode、コマンドラインツール、Ruby、Node.js、CocoaPodsのバージョンを確認します。まず最小構成でビルドし、その後に依存関係のキャッシュを復元します。

入力
バージョン一覧、ロックファイル、インストールスクリプト
確認
デフォルトのXcode、SDK、ランタイム、PATH
成果物
再現可能なローカルビルドコマンド
03
自動化を接続

runnerを登録し、初回タスクを監視

runnerの作業、キャッシュ、ログ用ディレクトリを分けます。初回タスクは並列実行せず、取得、ビルド、テスト、アーカイブ各段階の出力を確認します。

入力
runnerの登録情報とタスクタグ
確認
実行ユーザー、ディレクトリ権限、失敗時の終了コード
成果物
再実行でき、ログを追跡できるタスク
コマンド実行記録

最短経路でSSH、ビルド、アーカイブを検証

以下はトラブルシューティングの順序を示す記録で、プロジェクト固有の認証情報は含みません。まずリモートセッションを確認し、次にXcodeビルドを実行し、最後に自動化ツールが成功ステータスを返すか確認します。

VMKeepビルドセッション · zsh SESSION 01
09:14:02 $ ssh vmkeep@203.0.113.24
host vmkeep-m4-plus region JP shell /bin/zsh
09:14:18 $ xcodebuild -workspace Client.xcworkspace -scheme Client -configuration Release build

[1/4] パッケージ依存関係を解決

[2/4] ソースとリソースをコンパイル

[3/4] ユニットテストを実行

[4/4] ビルド成果物をアーカイブ

09:22:41 $ bundle exec fastlane ios build
ビルド成功
exit=0 · archive=Client.xcarchive · duration=08m23s

いずれかの手順が失敗した場合は、失敗したコマンドの前後少なくとも30行の出力、終了コード、Xcodeバージョン、発生時刻を保存します。問い合わせ前に、トークン、秘密鍵、署名素材の原文を削除してください。

CI/CD連携

runner、作業ディレクトリ、キャッシュを分けて管理

継続的なビルドの問題は、実行ユーザー、ディレクトリ権限、バージョンのずれ、キャッシュの汚染に起因することが多くあります。正式なパイプラインの初回実行前に、次の5項目を決めておきましょう。

A1

runnerを登録

専用の実行ユーザーでself-hosted runnerを登録し、ビルド種別ごとに分かりやすいタグを設定します。サービス再起動後もrunnerが自動的にオンラインへ復帰することを確認します。

IDとタグ
A2

作業ディレクトリを設計

ソースのチェックアウト、一時ビルド、アーカイブ成果物、タスクログを別々のディレクトリに配置し、失敗したタスクのファイルが次回実行に影響しないようにします。

権限とクリーンアップ
A3

キャッシュの境界を設定

キャッシュキーには少なくとも依存関係のロックファイル、Xcodeバージョン、アーキテクチャ情報を含めます。原因不明のコンパイルエラーが出たら、まず空のキャッシュで再実行します。

バージョンとヒット状況
A4

署名素材を管理

署名ファイル、パスワード、トークンはタスク実行時だけ注入し、リポジトリ、通常のログ、長期共有ディレクトリには保存しません。タスク終了後に一時コピーを削除します。

公開範囲を最小化
A5

失敗時の再試行を定義

まずネットワーク取得、依存関係の解決、コンパイル、テストの失敗を区別します。タスクがべき等であることを確認してから、該当段階の自動再試行を有効にします。

終了コードとログ
CI/CDの一般的な段階と確認内容
段階 優先して確認 保存すべき結果 ログに記録しない情報
コード取得 リポジトリ権限、リモートアドレス、ネットワーク名前解決 コミットハッシュ、ブランチ、失敗したコマンド アクセストークンの原文
依存関係のインストール ロックファイル、ミラー設定、キャッシュキー ツールバージョン、依存関係の解決結果 秘密の認証情報の原文
Xcodeビルド scheme、SDK、ビルド設定、対象プラットフォーム 完全なコマンド、終了コード、主要なエラー 署名パスワード
テストとアーカイブ テストターゲット、タイムアウト、成果物ディレクトリ テストレポート、アーカイブパス、タスク実行時間 署名素材の原ファイル
MLXサービスのトラブルシューティング

ローカル推論結果からリモートAPIまで確認

まずマシン上でモデルがリクエストを1回完了できることを確認し、次にリスニングアドレスとポートへのアクセスを確認します。モデルの読み込みに成功していない段階で、リモートクライアントを直接調べないでください。

  1. 01

    モデルパスを確認

    設定内のモデルディレクトリ、重みファイル、読み取り権限を確認します。相対パスはサービスの実際の作業ディレクトリを基準にします。

    test -r /srv/models/model && echo readable
  2. 02

    メモリ使用量を確認

    まず1件のリクエストでモデルを読み込み、読み込み前後のメモリ変化を記録します。プロセスが終了した場合は、システムログとアプリケーションの終了コードを確認します。

    ps -o pid,rss,command -p <PID>
  3. 03

    ローカルのリスニングを確認

    サービスがバインドしているアドレスとポートを確認します。ループバックアドレスのみで待ち受けている場合、リモートクライアントは直接接続できません。

    lsof -nP -iTCP:<PORT> -sTCP:LISTEN
  4. 04

    ローカルリクエストを実行

    クラウドMac内から最小リクエストを送信し、レスポンスステータス、TTFT、合計時間、モデルの返答を記録します。

    curl -sS http://127.0.0.1:<PORT>/health
  5. 05

    次にリモートAPIをテスト

    ローカルリクエストが成功したら、認証済みクライアントからリモートアクセスを確認します。クライアント時刻、サービスログ、リクエストIDを比較します。

    curl -sS https://<YOUR-ENDPOINT>/health
モデル互換性

特定のモデルを実行できるかどうかは、モデル形式、量子化方式、依存関係のバージョン、選択したメモリ構成によって決まります。

性能の判断

TTFTと持続スループットは、同じモデル、パラメータ、同時実行数の条件で比較します。

問い合わせ時の証拠

モデルパスの構成、起動コマンド、プロセスログ、リスニング結果、認証情報を除いた最小リクエストを提出します。

用語集

接続とトラブルシューティングで使う8つの用語

用語を統一すると、チーム内の認識のずれを減らせます。問い合わせ時は、マシン、接続方法、タスクの役割をできるだけ以下の名称で説明してください。

物理ノード
macOSとタスクを実際に実行するApple Siliconデバイスで、抽象化されたコンピューティングインスタンスではありません。
専有
1つの注文につき1台の独立した物理マシンを割り当て、実行リソースを他の利用者と共有しません。
非仮想マシン
システムとタスクは割り当てられた物理デバイス上で直接実行され、共有仮想化インスタンスを介して提供されません。
VNC
macOSのグラフィカルインターフェースへアクセスするリモート接続方式で、Xcode設定やデスクトップ操作に適しています。
SSH
コマンドライン管理、ファイル転送、ログ確認、自動化に使う暗号化リモート接続方式です。
self-hosted runner
チームのCIシステムに登録し、このクラウドMacでビルドタスクを実行する自ホスト型ランナーです。
MLX
Apple Silicon向けの機械学習フレームワークで、モデル変換、量子化、推論、サービス化に利用できます。
ビルドキャッシュ
重複するダウンロードやコンパイルを減らすために保持する中間ファイルです。キャッシュキーが不完全だと古い結果が混入することがあります。
よくある接続問題

症状ごとに確認し、基本項目を省略しない

どの問題でも、まず注文とノードを確認し、次にクライアント、ネットワーク、マシン内部の状態を調べます。該当項目を開くと、推奨手順と問い合わせ情報を確認できます。

SSHまたはVNCにログインできない

確認手順:注文とノード情報を確認し、ホストアドレスとユーザー名を再コピーします。入力方式とパスワード文字を確認し、SSHホストフィンガープリントまたはVNCアドレスを照合してから、既知の正常なネットワークで再テストします。

問い合わせ情報:注文番号、ノードリージョン、発生時刻、クライアント名、完全なエラーテキスト、ホストの機密情報を隠した接続コマンド。

接続後に頻繁に切断される

確認手順:切断時刻を記録し、ローカルネットワークの安定性をテストします。ルートを書き換える可能性のあるプロキシを無効にして再テストし、SSH keepaliveの設定を確認します。高負荷タスクと同時に起きていないかも確認してください。

問い合わせ情報:切断した時間帯、ネットワーク環境、連続テスト回数、クライアントログ、タスク種別、切断前後のシステム負荷。

VNC画面が遅延する、操作が途切れる

確認手順:表示解像度と色品質を下げ、大量の帯域を使う同期タスクを一時停止します。有線と無線ネットワークを比較し、特定の時間帯またはクライアントだけで発生するか確認します。

問い合わせ情報:ノードリージョン、クライアントバージョン、表示解像度、ローカルネットワーク種別、遅延の発生時刻、再現可能な操作手順。

ディスク容量不足、またはビルドディレクトリが増え続ける

確認手順:実行 df -h でパーティションを確認し、ディレクトリごとにDerivedData、アーカイブ成果物、依存関係キャッシュ、シミュレータデータ、タスクの作業領域を集計します。削除前に成果物がエクスポート済みであることを確認してください。

問い合わせ情報:ディスク使用量の結果、最も増加したディレクトリ、最近実行したタスク、実行済みのクリーンアップコマンド、ストレージ追加オプションの検討要否。

ローカルではビルドできるがrunnerタスクが失敗する

確認手順:実行ユーザー、環境変数、作業ディレクトリ、Xcodeバージョン、依存関係ロックファイル、キャッシュキーを比較します。runnerの実行ユーザーで同じビルドコマンドを手動実行し、最初に差異が現れる位置を特定します。

問い合わせ情報:完全なビルドコマンド、Xcodeバージョン、runnerタグ、失敗時の終了コード、マスキング済みログ、手動実行と自動タスクの差異。

サポート窓口

証拠を整理してから問い合わせ方法を選ぶ

注文済みで稼働中のノードに関する問題は、コンソールから問い合わせるのが優先です。プラン選択、導入範囲、未注文の相談はお問い合わせページからメールでご相談ください。

問い合わせ情報チェックリスト

1回の送信で調査に進める情報

5 ITEMS
注文番号

対象のマシンと契約期間を特定するために使用します。アカウントパスワードは送信しないでください。

ノードリージョン

シンガポール、日本(東京)、韓国(ソウル)、香港、米国東部のいずれかを明記します。

発生時刻

接続とタスクの記録を照合できるよう、タイムゾーンを含む時間帯を記載します。

コマンド出力

終了コードとエラー前後のコンテキストを残し、トークンと機密認証情報を削除します。

再現手順

初期状態から問題発生までを記載し、各手順の期待結果と実際の結果を明記します。

注文済みの場合

コンソールから問い合わせる

接続エラー、マシンの状態、ビルド問題、請求や注文との紐付けに関する問題に適しています。問い合わせにはコンテキストが保持されるため、マスキング済みログを追加できます。

コンソールから問い合わせる
購入前・導入相談

お問い合わせページからメールを準備

構成の選択、チームへの導入範囲、対象ノード、契約期間の相談に適しています。連絡先メールアドレスは support@vmkeep.com です。

サポートチームに連絡
次のステップ

構成を選び、このページで接続ベースラインを確立

3種類のApple Silicon専有物理マシンはすべて非仮想マシンで、日単位、週単位、月単位、四半期単位でレンタルできます。ノードのリアルタイム在庫はコンソールの表示をご確認ください。