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 團隊可以幫你評估最適合的部署方案,省去摸索的時間。