實驗第一天準備

先讓模型順利跑起來,
再把實驗時間拉長。

這份清單適用於剛啟用 OsxNode M4-16 的實驗者:先連線到獨享 Mac,檢查 Python 與 MLX,再用短輸出確認記憶體餘裕。目前機型配備 M4、16GB 統一記憶體和 256GB SSD。

首次連線前請準備訂單編號;到期前匯出結果。連線成功不代表任何大小的模型都能載入 16GB 統一記憶體。

先確認交付內容

從節點卡片進入 macOS 桌面

確認付款後會於當天開通;請以控制台中顯示節點與連線憑證為交付依據。若已付款但尚未看到憑證,請先檢查相關訂單,勿重複購買。

  1. 01

    登入並確認節點

    使用下單時的電子郵件登入控制台,進入實例或訂閱詳細資料,確認訂單編號、節點名稱與到期時間。節點名稱應與購買時選擇的項目一致;連線位址、使用者名稱與連接埠請以該實例的詳細資料為準。

  2. 02

    開啟遠端桌面

    在對應的節點卡片或詳細資料中點選「開啟遠端桌面」,使用控制台提供的憑證登入 macOS。請確保瀏覽器允許連線頁面正常運作;公開說明頁不是遠端桌面的登入入口。

  3. 03

    修改初始密碼

    首次登入系統後,前往系統設定的「使用者與群組」,修改該帳戶的初始密碼,並將新密碼存入個人密碼管理工具。先確認新密碼可正常使用,再結束原連線;請勿在支援單中傳送初始密碼或新密碼。

租用期間,每台實體 Mac 僅分配給一位租戶,並非虛擬機。關閉瀏覽器只會結束目前的檢視,不會停止租期;需要持續執行的工作,請依下文方式放入獨立工作階段。

環境盤點

先隔離相依套件,再安裝 MLX

請在遠端 Mac 的「終端機」中執行以下指令,而非在自己的電腦上執行。使用獨立虛擬環境可將本次實驗的 Python 套件與其他工作隔開;請勿對系統 Python 進行全域安裝。

檢查架構與 Homebrew

uname -m
command -v brew
brew --version

預期的架構為 arm64,後兩個指令應分別顯示 Homebrew 路徑與版本。若找不到 brew,請先依照 Homebrew 官方安裝說明完成安裝;請勿將來源不明的安裝指令碼貼到終端機。

建立本次實驗的 Python 環境

brew install python@3.11
mkdir -p "$HOME/experiments/mlx-first"
cd "$HOME/experiments/mlx-first"
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx mlx-lm
python -c 'import platform; import mlx.core as mx; from importlib.metadata import version; print(platform.machine()); print("mlx", version("mlx")); print("mlx-lm", version("mlx-lm")); print(mx.array([1, 2, 3]) + 1)'

安裝成功後,檢查指令應顯示 arm64、兩個套件的實際版本,以及值為 [2, 3, 4] 的陣列。版本號會隨安裝時間而異,不要只以特定版本字串作為成功與否的唯一判準。

記錄相依套件,方便下次還原

python --version
python -m pip freeze > requirements.txt
python -m pip check

相依套件沒有衝突時,最後一個指令通常會顯示 No broken requirements found.。重新開啟終端機後,先進入實驗目錄並執行 source .venv/bin/activate,再執行推論。請勿只搬移虛擬環境目錄;也要保留相依套件清單與自己的指令碼。

記憶體盤點

執行一次短推論,確認記憶體餘裕

16GB 統一記憶體由 CPU、GPU 與系統共用,不能全部視為模型可用容量。除了權重,還需要容納上下文快取、執行環境與其他應用程式;即使參數規模相同,量化格式與上下文長度不同,也可能造成不同的記憶體峰值。

下載前先確認路徑

先確認模型檔案大小、授權條款與剩餘磁碟空間。需要重複使用的權重與資料集,建議放在已加購的附加磁碟;請在 Finder 或「磁碟工具」中確認附加磁碟實際掛載路徑。

增加 SSD 容量不會增加 16GB 統一記憶體。若未加購附加磁碟,請使用主磁碟目錄並控管快取大小,勿直接照抄不存在的磁碟區名稱。

載入時觀察記憶體壓力

開啟「活動監視器 → 記憶體」,同時查看記憶體壓力與交換空間使用情形。先關閉不需要的圖形介面應用程式,限制輸出長度,再逐步增加上下文;並記錄模型名稱、量化位元數與指令參數。

記憶體壓力轉黃時,請停止增加並行工作、縮短上下文,或改用量化程度更高的模型。若持續發生換頁或程序遭終止,請勿原封不動地重複載入同一項工作。

先產生一小段文字

cd "$HOME/experiments/mlx-first"
source .venv/bin/activate
export HF_HOME="$HOME/model-cache"
mkdir -p "$HF_HOME"
df -h "$HF_HOME"
python -m mlx_lm.generate \
  --model mlx-community/Qwen2.5-3B-Instruct-4bit \
  --prompt "用三句話解釋統一記憶體。" \
  --max-tokens 128

首次執行指令時會下載指定模型;成功後會輸出生成文字,部分版本也會顯示生成統計。本範例不保證下載時間或 tokens/s。若使用附加磁碟,請將 HF_HOME 設為已確認存在且可寫入的磁碟內目錄,並在之後的工作階段中維持相同路徑。

先以 3B 4-bit 或短上下文的 7B 4-bit 推論進行驗證,再考慮擴大工作規模。不建議在本站 16GB 方案上執行 13B 以上的 8-bit 模型。LoRA 微調還需要為訓練狀態與啟用值預留空間;推論成功不代表訓練也可行。

輸入與輸出

把資料送進去,再把結果帶回來

SSH 適合執行指令,scp 適合單次複製,rsync 則適合重複同步及中斷後續傳。請先在控制台確認是否已啟用 SSH 及其連線參數;能使用瀏覽器桌面,不代表 SSH 已設定完成。

在本機終端機填入連線參數

read -r -p "SSH user: " REMOTE_USER
read -r -p "SSH host: " REMOTE_HOST
read -r -p "SSH port: " SSH_PORT
ssh -p "$SSH_PORT" "$REMOTE_USER@$REMOTE_HOST" \
  'mkdir -p ~/experiments/data ~/experiments/results'
scp -P "$SSH_PORT" ./dataset.jsonl \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" ./data/ \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/data/"
rsync -avP -e "ssh -p $SSH_PORT" \
  "$REMOTE_USER@$REMOTE_HOST:~/experiments/results/" ./results/

這組指令採用 Bash 語法,請在本機 Bash 中執行。主機、使用者與連接埠請填入實例詳細資料中的實際值。首次連線時請先核對主機指紋;勿以停用指紋檢查的方式忽略異常。rsync 範例未啟用刪除選項;來源目錄末尾的斜線表示同步目錄中的內容。

大型檔案先分割並驗證

網路不穩定時,可將單一大型封存檔分割成每個 1024MB 的分割檔,再逐一上傳。分割只是方便傳輸,不會壓縮原始檔案,也不會減少所需的最終磁碟空間。

shasum -a 256 dataset.tar
split -b 1024m dataset.tar dataset.part-
cat dataset.part-* > dataset-restored.tar
shasum -a 256 dataset-restored.tar

請在來源端分割檔案,並在目的端合併;確認兩次 SHA-256 值一致後再解壓縮。封存檔與所有分割檔同時存放時,請預留兩份資料所需的空間。

將長時間工作放進獨立工作階段

在遠端 Mac 安裝 tmux 並建立工作階段,然後在該工作階段中執行推論指令。按 Ctrl+B 再按 D 即可離開工作階段,之後可重新連回。

brew install tmux
tmux new -s mlx
tmux attach -t mlx

請先在新的工作階段中啟動工作;重新連線後再執行 attach。tmux 可應對 SSH 連線中斷,但無法讓工作在實例停機、重新啟動或租期結束後繼續執行。

租期規劃

在到期前安排續租與匯出資料

短租 Mac 採按天、週、月或季預付;到期後若未續租,系統會自動停機,不會產生後續費用。請以控制台顯示的到期時間安排工作與備份,勿依瀏覽器是否仍顯示桌面來判斷租期狀態。

  1. 01

    要繼續實驗,請提前續租

    到期前前往控制台中的相關訂閱,查看可用的續租選項並完成付款,再確認新的到期時間。付款方式僅限 USDT-TRC20,以及透過 Stripe 處理的 Visa / Mastercard / Amex,均以美元結算;實際可用的付款閘道以控制台顯示為準。

  2. 02

    不續租就先確認備份

    請在到期前匯出資料集、實驗指令碼、相依套件清單、日誌與結果檔案,並確認能在本機開啟;重要封存檔也請核對校驗值。離開遠端桌面不代表結果已同步,未出現在本機的檔案不算完成備份。

  3. 03

    停機不等於資料保管服務

    到期後服務將停止;節點回收後會進行磁碟清除與系統重新安裝,並在分配給下一位租戶前完成清理。我們不保證停機後仍有可存取資料的保留期間,也不保證清除後可復原資料。若訂單另有明確的資料處理安排,請以該訂單及支援單確認內容為準。

本站不提供統一的「停機後保留若干小時」保證。若不確定備份是否完成,請在租期內透過支援單確認;勿將到期後重新租用視為取回原磁碟資料的方法。

了解實例資訊

這些詞在實驗中各代表什麼?

容量、連線方式與計費週期是不同的面向。先了解彼此差異,才能判斷問題出在模型規模、網路連線方式還是租期狀態。

實體節點
實際提供雲端 Mac 服務的實體機器所在地區。連線參數請以對應實例的詳細資料為準。
獨享
租用期間,每台實體 Mac 僅分配給一位租戶;統一記憶體與 GPU 核心不與其他租戶共用。
統一記憶體
由 CPU 與 GPU 共用的記憶體池。本服務提供 16GB,系統、模型與執行環境都會占用其中的空間。
VNC
用來檢視及操作遠端桌面的連線方式。VNC 傳輸畫面與輸入,不取代 SSH 檔案傳輸。
螢幕共享
使用相容用戶端操作遠端 macOS 桌面的方式。連線位址與憑證請從控制台取得。
self-hosted runner
由使用者自行安裝在租用機器上的 CI 執行程序。租期結束並停機後,建置工作也無法繼續執行。
量化位元數
表示模型權重所使用的數值位元數,會影響權重大小與輸出表現。降低位元數不代表執行時的記憶體用量會按相同比例減少。
記憶體壓力
「活動監視器」中反映記憶體使用狀態的指標。指標轉黃時,請減少並行工作、上下文或模型規模,不要只看剩餘容量數字。
先保留問題現場

依症狀逐步縮小故障範圍

請先保存錯誤文字與發生時間,再進行調整。勿反覆重新啟動碰運氣;重新啟動可能中斷尚未儲存的實驗,也會清除判斷原因所需的現場資訊。

遠端桌面已連線,但畫面一直是黑的

可能是瀏覽器未完整建立連線、桌面工作階段狀態異常,或節點目前無法連線。單憑黑畫面無法判定機器已停機。

  1. 先查看控制台中的實例狀態與到期時間,確認該訂單仍在租期內。
  2. 關閉目前的連線頁面,從同一實例的詳細資料重新開啟桌面;也可暫時停用會阻擋頁面連線的瀏覽器擴充功能後再試。
  3. 若已設定 SSH,請透過 SSH 確認是否仍能連線至機器。勿為了測試而反覆變更網路設定。
  4. 若仍無法登入,請記錄黑畫面出現時間、瀏覽器版本,以及 SSH 是否可連線,並透過支援單提交問題。若有尚未儲存的工作,請先說明,勿立即執行電源操作。
輸入的符號與鍵盤按鍵不一致

本機輸入法、遠端 macOS 輸入來源與用戶端按鍵映射不一致,都可能造成符號輸入錯誤。通常不需要重新啟用實例。

  1. 先在遠端的普通文字編輯器中測試字母、數字與符號,勿在密碼欄位中猜測。
  2. 確認遠端選單列中的輸入來源,並檢查系統設定中的鍵盤與輸入法設定。
  3. 若快速鍵無法正常運作,請查看連線用戶端的按鍵映射,並留意 Command、Option 與 Control 之間的對應關係。
  4. 提交問題時請描述「按了什麼、畫面顯示什麼」,勿傳送真實密碼或私密金鑰作為測試文字。
模型載入時出現 Killed 或程序結束

記憶體不足可能是原因之一,但也請檢查磁碟空間、模型檔案完整性與相依套件錯誤。單獨一行結束訊息無法取代完整日誌。

  1. 請保留完整指令、錯誤訊息末尾內容、模型名稱、量化位元數與上下文設定。
  2. 查看「活動監視器」中的記憶體壓力與交換空間使用情形;關閉其他負載,改用較短輸出與較小模型進行驗證。
  3. 使用 df -h 檢查快取所在磁碟,確認下載沒有因空間不足而中斷。
  4. 在已啟用的虛擬環境中執行 python -m pip check。若小型模型也無法執行,請將錯誤訊息與環境版本一併提交支援單。
讓問題可以重現

一張支援單,附上這四類資訊

已啟用實例的問題,請優先登入控制台提交支援單,以便關聯訂單。購買前的方案選擇問題或無法登入時,請前往「聯絡我們」頁面查看電子郵件聯絡方式;對外支援信箱為 support@osxnode.com。

訂單與節點

請填寫訂單編號、節點名稱與目前的實例狀態。若涉及續租或付款,請補充付款方式與付款狀態;勿提供完整卡號、登入密碼或 SSH 私密金鑰。

時間與時區

請註明問題開始時間、是否持續發生及所用時區。勿只寫「剛才」;若涉及可用性申請,請提供所屬期間內的停機時段與節點名稱。

操作與錯誤

請說明執行前提、重現步驟、預期結果與實際結果。MLX 問題請附上模型識別碼、量化位元數、執行指令及相依套件版本,並移除路徑中的敏感資訊。

已執行的檢查

請列出瀏覽器重新連線、SSH 連線狀態、記憶體壓力與磁碟空間等檢查結果。並說明是否有正在執行或尚未備份的工作,以免造成不必要的中斷。

卡在哪一步,就附上該步驟的記錄。

請在支援單中附上實例、時間與錯誤資訊。若還不確定模型是否適用於 16GB,也可以先提供模型規模與量化位元數再詢問。