Deploy AI 模型:從本地到雲端的 AI 部署策略【2026】

想在自己的電腦上跑 AI 模型,不用付 API 費用?或者你需要把訓練好的模型部署到生產環境?

AI 模型部署有很多種方式,從最簡單的呼叫 API,到自己架設 GPU 伺服器,各有優缺點。這篇文章將帶你了解各種 AI 部署策略,幫你找到最適合的方案。

不管你是想省錢本地跑模型,還是要把 ML 專案上線服務客戶,這篇指南都能給你實用的方向。

AI 部署的不同層次

AI 部署不只是「裝個模型」這麼簡單,根據需求不同,有很多種做法。

方式一:使用 API 服務

最簡單的方式是直接使用 OpenAI、Anthropic(Claude)、Google 等公司的 API。

優點:
- 不需要任何基礎設施
- 即開即用,幾分鐘就能串接
- 自動擴展,不用擔心流量
- 模型持續更新

缺點:
- 每次呼叫都要付費
- 資料會傳到第三方伺服器
- 受限於 API 速率限制
- 無法客製化模型

適合:
- 快速驗證想法
- 流量不大的應用
- 不處理敏感資料

方式二:本地運行開源模型

使用 Ollama、LocalAI 等工具在本地運行開源 LLM。

優點:
- 完全免費(除了電費)
- 資料完全在本地
- 無速率限制
- 可離線使用

缺點:
- 需要足夠的硬體
- 效能受限於本地 GPU
- 需要自己管理模型更新
- 開源模型能力可能較弱

適合:
- 處理敏感資料
- 大量推論需求
- 學習和實驗

方式三:雲端 ML 平台

使用 AWS SageMaker、Google Vertex AI 等平台部署自訂模型。

優點:
- 彈性擴展
- 完整的 MLOps 工具鏈
- 支援各種模型框架
- 企業級安全性

缺點:
- 學習曲線陡峭
- 成本可能很高
- 設定複雜

適合:
- 企業級應用
- 需要自訂模型
- 大規模服務

方式四:自架 GPU 伺服器

租用或購買 GPU 伺服器自己部署。

優點:
- 完全控制
- 長期成本較低
- 可高度客製化

缺點:
- 需要維護硬體/伺服器
- 擴展較困難
- 初期投入較大

適合:
- 穩定的高流量應用
- 需要特殊硬體設定
- 有專業 IT 團隊

想了解更多部署基礎知識,請參考我們的 程式部署完整指南。

本地運行 AI:Ollama 完整教學

Ollama 是目前最簡單的本地 LLM 運行工具,讓我們從這裡開始。

Ollama 是什麼?

Ollama 是一個開源工具,讓你可以在本地電腦上運行各種大型語言模型(LLM),官方模型庫已經有 200 多種可選,包括:

  • Llama(Meta 開源模型系列)
  • Qwen(阿里巴巴開源模型系列,程式碼與推理能力強)
  • Mistral(歐洲開源模型)
  • Phi(Microsoft 小型模型)
  • Gemma(Google 開源模型系列)
  • 還有更多...

安裝 Ollama

macOS

brew install ollama

或下載安裝檔:https://ollama.com/download

Linux

curl -fsSL https://ollama.com/install.sh | sh

Windows

下載 Windows 安裝檔:https://ollama.com/download/windows

下載並運行模型

安裝完成後,啟動 Ollama:

ollama serve

在另一個終端機下載模型:

# 下載 Llama 3 8B 模型
ollama pull llama3

# 下載完成後直接對話
ollama run llama3

第一次下載會需要一些時間(幾 GB 的檔案),之後就是本地運行,不需要網路。

模型選擇指南

Ollama 支援多種模型,根據你的硬體選擇:

模型 參數量 RAM 需求 適合用途
phi3:mini 3.8B 4 GB 輕量任務、低階硬體
llama3:8b 8B 8 GB 一般對話、程式輔助
llama3:70b 70B 64 GB 複雜推理、專業任務
codellama 7B/13B 8-16 GB 程式碼生成
mistral 7B 8 GB 平衡效能與品質

💡 本地 AI 設定遇到問題?讓 VibeFix 幫你處理

Ollama API 使用

Ollama 啟動後會在 localhost:11434 提供 REST API:

產生文字

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "什麼是機器學習?",
  "stream": false
}'

對話模式

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    {"role": "user", "content": "你好,請介紹一下自己"}
  ],
  "stream": false
}'

Python 整合

使用 Python 呼叫 Ollama:

import requests

def chat_with_ollama(prompt, model="llama3"):
    response = requests.post(
        "http://localhost:11434/api/generate",
        json={
            "model": model,
            "prompt": prompt,
            "stream": False
        }
    )
    return response.json()["response"]

# 使用範例
answer = chat_with_ollama("解釋什麼是 Docker")
print(answer)

或使用官方 Python 套件:

pip install ollama
import ollama

response = ollama.chat(
    model='llama3',
    messages=[
        {'role': 'user', 'content': '什麼是 Kubernetes?'}
    ]
)
print(response['message']['content'])

硬體需求與 GPU 設定

運行 AI 模型需要足夠的硬體資源,尤其是 GPU。

CPU vs GPU

CPU 運行

  • 不需要特別設定
  • 速度較慢(尤其是大模型)
  • 適合小型模型或偶爾使用

GPU 運行

  • 速度快 10-100 倍
  • 需要 NVIDIA GPU(CUDA 支援)
  • Apple Silicon Mac 有原生支援

NVIDIA GPU 設定

如果你有 NVIDIA GPU,需要安裝 CUDA 驅動:

確認 GPU

nvidia-smi

安裝 CUDA Toolkit

# Ubuntu
sudo apt install nvidia-cuda-toolkit

# 確認安裝
nvcc --version

Ollama 會自動偵測 NVIDIA GPU 並使用它。

Apple Silicon 優化

M1/M2/M3 Mac 對 Ollama 有原生支援,會自動使用 Metal 加速:

# 確認使用 Metal
ollama run llama3 --verbose

Apple Silicon 的統一記憶體架構讓它可以運行比同等 RAM 的 PC 更大的模型。

記憶體需求估算

粗略的估算公式:

所需 RAM ≈ 模型參數量 × 2(量化後)

7B 模型 ≈ 7 × 2 = 14 GB(實際約 4-8 GB)
13B 模型 ≈ 13 × 2 = 26 GB(實際約 8-16 GB)
70B 模型 ≈ 70 × 2 = 140 GB(實際約 40-64 GB)

這是因為現代模型都有量化版本(4-bit、8-bit),大幅降低記憶體需求。

將 ML 模型包裝成 API

如果你有自己訓練的模型,需要包裝成 API 供應用程式使用。

使用 FastAPI 建立 ML API

FastAPI 是 Python 中最適合建立 ML API 的框架:

pip install fastapi uvicorn

基本 API 結構

# app.py
from fastapi import FastAPI
from pydantic import BaseModel
import pickle

app = FastAPI()

# 載入模型
with open("model.pkl", "rb") as f:
    model = pickle.load(f)

class PredictionRequest(BaseModel):
    features: list[float]

class PredictionResponse(BaseModel):
    prediction: float
    confidence: float

@app.post("/predict", response_model=PredictionResponse)
def predict(request: PredictionRequest):
    # 進行預測
    prediction = model.predict([request.features])[0]
    confidence = model.predict_proba([request.features]).max()

    return PredictionResponse(
        prediction=prediction,
        confidence=confidence
    )

@app.get("/health")
def health_check():
    return {"status": "healthy"}

啟動 API

uvicorn app:app --host 0.0.0.0 --port 8000

呼叫 API

curl -X POST http://localhost:8000/predict \
  -H "Content-Type: application/json" \
  -d '{"features": [1.0, 2.0, 3.0, 4.0]}'

加入批次預測

對於大量資料,批次預測更有效率:

class BatchPredictionRequest(BaseModel):
    instances: list[list[float]]

@app.post("/predict/batch")
def predict_batch(request: BatchPredictionRequest):
    predictions = model.predict(request.instances)
    return {"predictions": predictions.tolist()}

生產環境部署

將 ML API 部署到生產環境,可以參考我們的 Python 部署教學。

基本的 Dockerfile:

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

Docker + GPU 部署

將 AI 模型容器化部署,同時使用 GPU 加速。

NVIDIA Container Toolkit

要在 Docker 中使用 GPU,需要安裝 NVIDIA Container Toolkit:

# 設定套件庫
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安裝
sudo apt update
sudo apt install -y nvidia-container-toolkit

# 重啟 Docker
sudo systemctl restart docker

GPU Docker Compose

version: '3.8'

services:
  ml-api:
    build: .
    ports:
      - "8000:8000"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    volumes:
      - ./models:/app/models

💡 GPU Docker 設定太複雜?讓 VibeFix 專家幫你設定

PyTorch GPU 容器

使用 PyTorch 官方映像檔:

FROM pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "serve.py"]

確認 GPU 可用

在容器內確認 GPU:

import torch

print(f"CUDA available: {torch.cuda.is_available()}")
print(f"GPU count: {torch.cuda.device_count()}")
print(f"GPU name: {torch.cuda.get_device_name(0)}")

雲端 ML 平台比較

對於企業級應用,雲端 ML 平台提供完整的部署解決方案。

AWS SageMaker

Amazon 的機器學習平台,功能最完整。

主要功能:
- 模型訓練與調參
- 自動擴展的推論端點
- A/B 測試
- 模型監控
- 與 AWS 生態系整合

部署模型

import sagemaker
from sagemaker.pytorch import PyTorchModel

model = PyTorchModel(
    model_data='s3://bucket/model.tar.gz',
    role='arn:aws:iam::xxx:role/SageMakerRole',
    framework_version='2.0',
    py_version='py310',
    entry_point='inference.py'
)

predictor = model.deploy(
    instance_type='ml.g4dn.xlarge',
    initial_instance_count=1
)

費用估算(2026 年 9 月參考行情,實際請查官方定價頁):
- ml.t3.medium(CPU):約 $0.05/小時
- ml.g4dn.xlarge(GPU):約 $0.74/小時
- 加上資料傳輸和儲存費用

Google Vertex AI

Google Cloud 的 ML 平台,與 TensorFlow 整合最好。

主要功能:
- AutoML(自動機器學習)
- 預訓練 API(Vision、Natural Language)
- 自訂模型部署
- 特徵儲存庫
- 實驗追蹤

部署模型

from google.cloud import aiplatform

aiplatform.init(project='my-project', location='us-central1')

model = aiplatform.Model.upload(
    display_name='my-model',
    artifact_uri='gs://bucket/model/',
    serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/pytorch-gpu.1-13:latest'
)

endpoint = model.deploy(
    machine_type='n1-standard-4',
    accelerator_type='NVIDIA_TESLA_T4',
    accelerator_count=1
)

費用估算(2026 年 9 月參考行情,實際請查官方定價頁):
- n1-standard-4(CPU):約 $0.22/小時
- 加上 GPU:約 $0.40/小時(T4)
- 預測請求另計

Azure Machine Learning

Microsoft 的 ML 平台,與 Azure 服務整合佳。

主要功能:
- Azure ML Studio(視覺化介面)
- 自動化機器學習
- MLOps 管線
- 負責任 AI 儀表板

部署模型

from azure.ai.ml import MLClient
from azure.ai.ml.entities import ManagedOnlineEndpoint, ManagedOnlineDeployment

ml_client = MLClient.from_config()

endpoint = ManagedOnlineEndpoint(name="my-endpoint")
ml_client.online_endpoints.begin_create_or_update(endpoint)

deployment = ManagedOnlineDeployment(
    name="my-deployment",
    endpoint_name="my-endpoint",
    model="azureml:my-model:1",
    instance_type="Standard_DS3_v2",
    instance_count=1
)
ml_client.online_deployments.begin_create_or_update(deployment)

平台比較總結

特性 AWS SageMaker Google Vertex AI Azure ML
生態系整合 AWS GCP Azure
AutoML 有 強 有
預訓練 API 較少 豐富 中等
學習曲線 陡峭 中等 中等
適合對象 企業、AWS 用戶 TensorFlow 用戶 Microsoft 用戶

成本優化策略

AI 部署的成本可能很高,以下是一些優化策略。

模型量化

將模型從 32-bit 轉換為 8-bit 或 4-bit:

from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-2-7b-hf",
    load_in_8bit=True,  # 8-bit 量化
    device_map="auto"
)

效果:
- 記憶體減少 50-75%
- 速度提升 2-4 倍
- 品質損失通常可接受

Spot/Preemptible 執行個體

使用雲端的競價執行個體,可以節省 60-90% 費用:

AWS Spot Instances

predictor = model.deploy(
    instance_type='ml.g4dn.xlarge',
    initial_instance_count=1,
    use_spot_instances=True,
    max_wait=3600  # 最多等待 1 小時
)

適合:
- 批次處理任務
- 可中斷的訓練任務
- 開發測試環境

自動擴展

根據流量自動調整執行個體數量:

# AWS SageMaker 自動擴展
predictor.autoscale(
    min_instances=1,
    max_instances=10,
    target_tracking_scaling_policy_configuration={
        "TargetValue": 70,  # 目標 CPU 使用率 70%
        "PredefinedMetricType": "InvocationsPerInstance"
    }
)

模型快取與批次處理

減少重複運算:

from functools import lru_cache

@lru_cache(maxsize=1000)
def get_embedding(text):
    return model.encode(text)

# 批次處理多個請求
def batch_predict(texts, batch_size=32):
    results = []
    for i in range(0, len(texts), batch_size):
        batch = texts[i:i+batch_size]
        results.extend(model.predict(batch))
    return results

安全性考量

AI 部署有特殊的安全性考量。

API 金鑰管理

永遠不要把 API 金鑰寫在程式碼中:

import os
from dotenv import load_dotenv

load_dotenv()

api_key = os.getenv("OPENAI_API_KEY")

使用環境變數或 Secret Manager:

# docker-compose.yml
services:
  app:
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}

輸入驗證

防止 Prompt Injection 攻擊:

def sanitize_input(user_input):
    # 移除可能的注入字元
    dangerous_patterns = [
        "ignore previous instructions",
        "system prompt",
        "```"
    ]
    for pattern in dangerous_patterns:
        if pattern.lower() in user_input.lower():
            raise ValueError("Invalid input detected")
    return user_input

速率限制

防止濫用:

from fastapi import FastAPI, HTTPException
from slowapi import Limiter
from slowapi.util import get_remote_address

limiter = Limiter(key_func=get_remote_address)
app = FastAPI()

@app.post("/predict")
@limiter.limit("10/minute")  # 每分鐘最多 10 次
def predict(request: Request):
    # ...

輸出過濾

確保模型輸出安全:

def filter_output(response):
    # 移除敏感資訊
    import re
    # 移除可能的個資
    response = re.sub(r'\b\d{10}\b', '[PHONE]', response)
    response = re.sub(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', '[EMAIL]', response)
    return response

VibeFix AI 部署服務

AI 部署涉及多個專業領域:

  • 硬體規格評估與採購建議
  • GPU 環境設定與優化
  • 模型選擇與量化
  • API 設計與效能調校
  • 安全性與成本優化

VibeFix 團隊提供完整的 AI 部署顧問服務,從規劃到上線一條龍協助。

服務範圍:
- 本地 AI 環境建置(Ollama、LocalAI)
- 雲端 ML 平台設定(SageMaker、Vertex AI)
- ML API 開發與部署
- GPU Docker 環境設定
- 成本優化諮詢

想了解更詳細的服務?查看 VibeFix 服務內容。

結語:選擇適合你的 AI 部署策略

AI 部署沒有一體適用的最佳方案,需要根據你的需求選擇:

需求 推薦方案
快速驗證想法 OpenAI/Claude API
處理敏感資料 本地 Ollama
企業級服務 雲端 ML 平台
自訂模型上線 FastAPI + Docker
大規模推論 自架 GPU 叢集

透過這篇教學,你已經學會:

  • AI 部署的各種方式與取捨
  • Ollama 本地運行 LLM 的完整設定
  • 硬體需求評估與 GPU 設定
  • 使用 FastAPI 包裝 ML 模型為 API
  • Docker + GPU 容器化部署
  • 三大雲端 ML 平台的比較
  • 成本優化與安全性策略

如果你需要自動化 AI 工作流程,可以結合 n8n 自動化平台 來串接各種 AI 服務。對於 Python 模型的部署,也可以參考我們的 Python 部署教學。


雲端部署搞不懂?

AI 部署涉及的技術面向很廣,從硬體選購到雲端設定都需要專業知識。VibeFix 團隊可以幫你評估最適合的部署方案,省去摸索的時間。

諮詢雲端方案 →

分享文章:
V

VibeFix

專門解決 AI Vibe Coding 後的疑難雜症,讓你的專案順利上線。

這篇文章有幫到你嗎?

如果還有問題,讓我們直接幫你解決!

聯繫我們