[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-databricks-custom-models-aws-overview-zh":3,"article-related-databricks-custom-models-aws-overview-zh":34,"series-tools-47ce5058-3c10-4d7c-ad89-053b8f8d953e":87},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":26,"views":30,"created_at":31,"published_at":32,"topic_cluster_id":33},"47ce5058-3c10-4d7c-ad89-053b8f8d953e","databricks-custom-models-aws-overview-zh","Databricks AWS 自訂模型重點","\u003Cp data-speakable=\"summary\">Databricks 在 \u003Ca href=\"\u002Ftag\u002Faws\">AWS\u003C\u002Fa> 上的自訂模型，可以先用 MLflow 記錄，再用 Model Serving 以 CPU 或 \u003Ca href=\"\u002Ftag\u002Fgpu\">GPU\u003C\u002Fa> 方式提供 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa>。\u003C\u002Fp>\u003Cp>Databricks 在 2026 年 5 月 28 日更新了這份文件。內容很實用，也很直白。說白了，它在提醒你：模型不是訓練完就結束，打包、依賴、重載、擴縮容，才是上線後的麻煩事。\u003C\u002Fp>\u003Cp>這份文件還丟了不少硬數字。像是 endpoint 建立約 10 分鐘，請求 timeout 是 597 秒，scale from zero 可能要 10 到 20 秒，甚至更久。這些數字很適合拿來做上線前的風險評估。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>主題\u003C\u002Fth>\u003Cth>Databricks 說法\u003C\u002Fth>\u003Cth>實務意義\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>Endpoint 建立\u003C\u002Ftd>\u003Ctd>約 10 分鐘\u003C\u002Ftd>\u003Ctd>新版本打包與資源配置都要時間\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Request timeout\u003C\u002Ftd>\u003Ctd>597 秒\u003C\u002Ftd>\u003Ctd>推論太久會直接失敗\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Scale from zero\u003C\u002Ftd>\u003Ctd>10–20 秒，有時更久\u003C\u002Ftd>\u003Ctd>冷啟動會卡住低延遲服務\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Scale-down 視窗\u003C\u002Ftd>\u003Ctd>每 5 分鐘\u003C\u002Ftd>\u003Ctd>流量掉了，資源會慢慢縮回去\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Provisioned concurrency\u003C\u002Ftd>\u003Ctd>QPS × 執行時間\u003C\u002Ftd>\u003Ctd>容量規劃要看真實流量\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>什麼叫做 custom model\u003C\u002Fh2>\u003Cp>在 \u003Ca href=\"https:\u002F\u002Fdocs.databricks.com\u002Faws\u002Fen\u002Fmachine-learning\u002Fmodel-serving\u002Fcustom-models\" target=\"_blank\" rel=\"noopener\">Databricks custom models\u003C\u002Fa> 的語境裡，custom model 指的是你用 Python 寫的模型，或是包著自訂程式碼的模型。它可以是 \u003Ca href=\"https:\u002F\u002Fscikit-learn.org\u002F\" target=\"_blank\" rel=\"noopener\">scikit-learn\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fxgboost.readthedocs.io\u002F\" target=\"_blank\" rel=\"noopener\">XGBoost\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fpytorch.org\u002F\" target=\"_blank\" rel=\"noopener\">PyTorch\u003C\u002Fa>，也可以是 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Ftransformers\" target=\"_blank\" rel=\"noopener\">HuggingFace Transformers\u003C\u002Fa>。甚至你自己包的 Python 邏輯，也算。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780378383303-0zt9.png\" alt=\"Databricks AWS 自訂模型重點\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>部署流程其實不複雜。先把模型記錄到 \u003Ca href=\"https:\u002F\u002Fmlflow.org\u002F\" target=\"_blank\" rel=\"noopener\">MLflow\u003C\u002Fa>，再註冊到 \u003Ca href=\"https:\u002F\u002Fwww.databricks.com\u002Fproduct\u002Funity-catalog\" target=\"_blank\" rel=\"noopener\">Unity Catalog\u003C\u002Fa> 或 workspace registry，最後開一個 serving endpoint。Databricks 也有官方的 \u003Ca href=\"https:\u002F\u002Fwww.databricks.com\u002Fproduct\u002Fmachine-learning\u002Fmodel-serving\" target=\"_blank\" rel=\"noopener\">Model Serving\u003C\u002Fa> 頁面，能對照整體流程。\u003C\u002Fp>\u003Cp>這裡最容易踩雷的是「我本機能跑」。上線時不只看模型本體，還要看依賴有沒有一起打包。少一個套件，服務就可能直接掛掉。這種錯誤最煩，因為它常常不是訓練問題，而是封裝問題。\u003C\u002Fp>\u003Cul>\u003Cli>標準套件可直接用 MLflow flavor。\u003C\u002Fli>\u003Cli>\u003Ccode>pyfunc\u003C\u002Fcode> 適合包自訂 Python 邏輯。\u003C\u002Fli>\u003Cli>Unity Catalog 比較適合做治理與權限控管。\u003C\u002Fli>\u003Cli>模型上線前，先確認依賴清單完整。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>記錄方式會影響部署難度\u003C\u002Fh2>\u003Cp>Databricks 花很多篇幅講 logging，因為問題通常就出在這裡。它支援 Databricks Runtime for ML 的 autologging，也支援 MLflow built-in flavors 的手動記錄，還有用 \u003Ccode>pyfunc\u003C\u002Fcode> 包自訂程式碼。\u003C\u002Fp>\u003Cp>三種方式差很多。autologging 最省事，但你要接受它的預設流程。built-in flavor 比較乾淨，適合標準模型。\u003Ccode>pyfunc\u003C\u002Fcode> 最彈性，能塞前處理、後處理、工具函式，甚至一些業務邏輯。\u003C\u002Fp>\u003Cp>如果你的模型不是單純的 predict，\u003Ccode>pyfunc\u003C\u002Fcode> 通常比較不彆扭。很多團隊會把前處理寫在 API 層，結果部署時忘了同步版本。這種拆法看起來很乾淨，實際上很容易出事。\u003C\u002Fp>\u003Cblockquote>\u003Cp>“Databricks refers to such models as custom models.”\u003C\u002Fp>\u003C\u002Fblockquote>\u003Cp>Databricks 也建議加上 \u003Ccode>signature\u003C\u002Fcode> 和 \u003Ccode>input_example\u003C\u002Fcode>。這不是裝飾品。\u003Ccode>signature\u003C\u002Fcode> 會定義輸入輸出格式，\u003Ccode>input_example\u003C\u002Fcode> 則能幫你先抓出 shape 和 type 的錯誤。\u003C\u002Fp>\u003Cp>我會直接講結論：如果模型需要特殊前處理，就把那段邏輯一起打包。不要幻想 serving container 會自己猜。文件也很直接，缺依賴就是常見失敗原因，沒什麼好美化的。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Ccode>signature\u003C\u002Fcode> 會定義資料欄位與輸出格式。\u003C\u002Fli>\u003Cli>\u003Ccode>input_example\u003C\u002Fcode> 可用來先驗證 payload。\u003C\u002Fli>\u003Cli>\u003Ccode>code_path\u003C\u002Fcode> 可把自訂程式一起帶上。\u003C\u002Fli>\u003Cli>\u003Ccode>pip_requirements\u003C\u002Fcode> 與 \u003Ccode>extra_pip_requirements\u003C\u002Fcode> 用來鎖依賴。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>CPU 和 GPU 真的不是同一件事\u003C\u002Fh2>\u003Cp>Databricks 提供的 compute 類型不少，但差異不只是名字。CPU 方案有 \u003Cstrong>CPU_MEDIUM\u003C\u002Fstrong> 和 \u003Cstrong>CPU_LARGE\u003C\u002Fstrong>。前者每個 concurrency 有 8GB，後者有 16GB。這代表你可以用記憶體來換吞吐，不一定非得上 GPU。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780378384400-7lnj.png\" alt=\"Databricks AWS 自訂模型重點\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>GPU 方案就更細了。\u003Cstrong>GPU_SMALL\u003C\u002Fstrong> 是 1xT4 與 16GB。\u003Cstrong>GPU_MEDIUM\u003C\u002Fstrong> 是 1xA10G 與 24GB。\u003Cstrong>MULTIGPU_MEDIUM\u003C\u002Fstrong> 是 4xA10G 與 96GB。\u003Cstrong>GPU_MEDIUM_8\u003C\u002Fstrong> 則是 8xA10G 與 192GB。這些數字很重要，因為它們直接影響每個 concurrency 能吃多少記憶體。\u003C\u002Fp>\u003Cp>講白了，如果你的模型偏吃記憶體，但還不需要 GPU，先升到 CPU_MEDIUM 或 CPU_LARGE 可能就夠了。反過來，如果你在跑 transformer 類\u003Ca href=\"\u002Fnews\u002Fpewdiepie-launches-odysseus-free-local-ai-workspace-zh\">工作\u003C\u002Fa>負載，PyTorch 和 Transformers flavor 會自動處理 GPU prediction，少掉不少接線工作。\u003C\u002Fp>\u003Cp>但 GPU 也不是萬靈丹。容器 build 會更久，模型太大時還可能卡在 60 分鐘 timeout，或直接噴出 \u003Ccode>No space left on device\u003C\u002Fcode>。如果你是在做大型 \u003Ca href=\"\u002Ftag\u002Fllm\">LLM\u003C\u002Fa>，Databricks 直接建議改用 \u003Ca href=\"https:\u002F\u002Fdocs.databricks.com\u002Faws\u002Fen\u002Fmachine-learning\u002Ffoundation-model-apis\" target=\"_blank\" rel=\"noopener\">Foundation Model APIs\u003C\u002Fa>。\u003C\u002Fp>\u003Cul>\u003Cli>CPU_MEDIUM 提供 8GB per concurrency。\u003C\u002Fli>\u003Cli>CPU_LARGE 提供 16GB per concurrency。\u003C\u002Fli>\u003Cli>GPU_MEDIUM_8 提供 192GB per concurrency。\u003C\u002Fli>\u003Cli>GPU autoscaling 一般比 CPU 慢。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>擴縮容規則比多數人想的更硬\u003C\u002Fh2>\u003Cp>文件把 scaling 規則講得很清楚。Databricks 把 provisioned concurrency 定義為系統可同時處理的最大平行請求數。它還給了一個簡單公式：\u003Cstrong>provisioned concurrency = QPS × model execution time\u003C\u002Fstrong>。\u003C\u002Fp>\u003Cp>這個公式很實際。假設你的模型每秒 20 個請求，也就是 20 QPS，而每個請求要 0.2 秒，那你至少需要 4 個 concurrency。這還沒算尖峰、重試、背景負載。很多團隊就是少算這一段，然後以為是平台不穩。\u003C\u002Fp>\u003Cp>Databricks 的 scaling 行為也有節奏。流量上來時，endpoint 會\u003Ca href=\"\u002Fnews\u002F4-reasons-gemini-users-hit-caps-fast-zh\">很快\u003C\u002Fa>擴上去。流量掉下來後，則大約每 5 分鐘縮一次。你也可以選 scale to zero，但第一個請求會碰到 cold start。\u003C\u002Fp>\u003Cp>這個 cold start 通常要 10 到 20 秒，有時會更久，而且沒有 SLA 保證。對要穩定低延遲的 production 服務，這就很麻煩。Databricks 也直接寫了，scale to zero 不適合需要固定 uptime 的工作負載。\u003C\u002Fp>\u003Cblockquote>\u003Cp>“Scale to zero should not be used for production workloads that require consistent uptime or guaranteed response times.”\u003C\u002Fp>\u003C\u002Fblockquote>\u003Cp>還有一個常被忽略的點。Databricks 會用 zero-downtime update，先保留舊設定，等新設定 ready 才切換。這樣不會中斷流量，但切換期間你可能同時付兩份錢。\u003C\u002Fp>\u003Cul>\u003Cli>容量規劃要看 QPS 與 latency。\u003C\u002Fli>\u003Cli>scale to zero 會有 cold start。\u003C\u002Fli>\u003Cli>流量下降後，約每 5 分鐘縮容。\u003C\u002Fli>\u003Cli>更新期間可能同時計費兩個版本。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>這份文件真正想提醒你的事\u003C\u002Fh2>\u003Cp>如果你真的要在 Databricks 上跑 custom model，流程其實很明確。先用 MLflow 包好模型，再加上 signature、input example，接著把依賴列清楚，最後才進 serving。這樣做很土，但很有效。\u003C\u002Fp>\u003Cp>文件還提到一個老模型問題。若你用的是 MLflow v1.17 或更早的模型，可能會碰到 Anaconda 的 \u003Ccode>defaults\u003C\u002Fcode> channel。新版本通常改成 \u003Ccode>conda-forge\u003C\u002Fcode>。如果你有舊模型在跑，最好先檢查 \u003Ccode>conda.yaml\u003C\u002Fcode>，不要直接假設環境還能重現。\u003C\u002Fp>\u003Cp>我覺得這份文件最有價值的地方，不是教你怎麼 train。它是在提醒你，上線後最重要的是包裝紀律。模型能不能在維護後正常 reload，往往比訓練分數更重要。\u003C\u002Fp>\u003Cp>如果 reload 失敗，Databricks 會保留舊設定繼續服務。這是安全機制，但也代表你的部署流程要夠穩。對 production 團隊來說，真正的問題不是模型準不準，而是它能不能穩穩地活在伺服器上。\u003C\u002Fp>\u003Ch2>接下來你該怎麼做\u003C\u002Fh2>\u003Cp>如果你要把自訂模型丟到 AWS 上跑，先做一份上線前\u003Ca href=\"\u002Fnews\u002Fai-resist-list-global-pushback-zh\">清單\u003C\u002Fa>。確認模型有 signature，依賴有列全，推論時間有量過，還要測過 cold start。這些事情很無聊，但比半夜救火好太多。\u003C\u002Fp>\u003Cp>我會建議團隊先用小流量測試，再決定要不要開 scale to zero。低流量內部工具可以考慮省成本。正式產品則應該先看延遲和穩定性，再決定容量。你如果連 597 秒 timeout 都沒算進去，後面很容易踩雷。\u003C\u002Fp>\u003Cp>下一步很簡單。把你的模型 deployment 流程和 Databricks 的文件對一次。只要有一個環節不是你能重現的，就先別上 production。這種事沒什麼浪漫可言，能穩定跑才是真的。\u003C\u002Fp>","Databricks 說明如何在 AWS 上打包、部署與擴展自訂模型，重點是 MLflow、CPU\u002FGPU 選擇、冷啟動、重載規則與容量規劃。","docs.databricks.com","https:\u002F\u002Fdocs.databricks.com\u002Faws\u002Fen\u002Fmachine-learning\u002Fmodel-serving\u002Fcustom-models",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780378383303-0zt9.png","tools","zh","6455d3ca-2f71-42e9-aec6-91db98028f01",[17,18,19,20,21,22,23,24,25],"Databricks","AWS","Model Serving","MLflow","Unity Catalog","GPU","CPU","custom model","ML",[27,28,29],"Databricks 的 custom model 要先在 MLflow 包裝，再透過 Model Serving 上線。","CPU 與 GPU 的差別不只算力，還包括每個 concurrency 的記憶體與啟動時間。","scale to zero 適合省成本，不適合要求固定延遲的 production 服務。",5,"2026-06-02T05:32:34.88582+00:00","2026-06-02T05:32:34.877+00:00","974a18a2-f56a-4b1d-8ad0-52ad97f12850",{"tags":35,"relatedLang":46,"relatedPosts":50},[36,38,40,42,44],{"name":19,"slug":37},"model-serving",{"name":18,"slug":39},"aws",{"name":17,"slug":41},"databricks",{"name":21,"slug":43},"unity-catalog",{"name":20,"slug":45},"mlflow",{"id":15,"slug":47,"title":48,"language":49},"databricks-custom-models-aws-overview-en","Databricks custom models on AWS: what to know","en",[51,57,63,69,75,81],{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"63d8b456-ad6b-475e-86e9-d4677ca226aa","magenta-realtime-2-score-inside-daw-zh","Magenta RealTime 2 讓你在 DAW 裡即時改曲","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781046204038-8tox.png","2026-06-09T23:02:55.9651+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"f60261ff-a42e-4cfb-9f90-97785e633289","open-source-ai-tools-beat-claude-paid-tiers-zh","開源 AI 工具在價值上已經贏過 Claude 付費方案","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781045266035-on7t.png","2026-06-09T22:47:20.195939+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"8520cd4f-2531-4808-a95d-26f590239d7a","500-ai-agent-projects-show-where-agents-work-now-zh","500 個 AI agent 專案，現在能做什麼","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781033591132-c0nh.png","2026-06-09T19:32:37.03924+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":13},"c557ef1c-7fde-4c86-918e-4fb9680ee9df","chocolatey-go-package-policy-installs-zh","Chocolatey 的 Go 安裝變成政策","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781029110289-xkbh.png","2026-06-09T18:18:05.078435+00:00",{"id":76,"slug":77,"title":78,"cover_image":79,"image_url":79,"created_at":80,"category":13},"90b2df54-df6e-417d-9e16-91e9ad2f53d7","go-support-policy-turns-releases-into-a-checklist-zh","Go 支援政策把發版變清單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781028200122-3m4u.png","2026-06-09T18:02:49.50176+00:00",{"id":82,"slug":83,"title":84,"cover_image":85,"image_url":85,"created_at":86,"category":13},"119c23c6-8ae7-4c4e-820e-1eba0730d702","rustdesk-self-hosting-secure-remote-access-zh","RustDesk 自架遠端存取部署指南","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1781017373324-g7et.png","2026-06-09T15:02:24.118819+00:00",[88,93,98,103,108,113,118,123,128,133],{"id":89,"slug":90,"title":91,"created_at":92},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":94,"slug":95,"title":96,"created_at":97},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":99,"slug":100,"title":101,"created_at":102},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":104,"slug":105,"title":106,"created_at":107},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":109,"slug":110,"title":111,"created_at":112},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":114,"slug":115,"title":116,"created_at":117},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":119,"slug":120,"title":121,"created_at":122},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":124,"slug":125,"title":126,"created_at":127},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":129,"slug":130,"title":131,"created_at":132},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":134,"slug":135,"title":136,"created_at":137},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]