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

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

想在自己的電腦上跑 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),包括:

  • Llama 3(Meta 開源模型)
  • Mistral(歐洲開源模型)
  • Phi-3(Microsoft 小型模型)
  • CodeLlama(程式碼專用)
  • 還有更多...

安裝 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
)

費用估算:
- 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
)

費用估算:
- n1-standard-4(CPU):約 $0.19/小時
- 加上 GPU:約 $0.35/小時(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 後的疑難雜症,讓你的專案順利上線。

這篇文章有幫到你嗎?

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

聯繫我們