iOS应用中的AI:CoreML、云API和端侧LLM对比
iOS应用中AI的三条路径。CoreML用于Apple生态系统,云API用于能力拓展,llama.cpp端侧LLM用于成本和隐私。面向Swift开发者的实用比较。
作为iOS开发者,你有三条不同的路径为应用添加AI功能。每条路径使用不同的技术,有不同的成本特征,适合不同的任务。选错路径要么浪费金钱,要么浪费时间。
本指南从Swift开发者的视角对比这三种方法:每种能做什么,成本多少,何时使用。
路径1:CoreML
Apple的原生机器学习框架。CoreML使用Apple的Neural Engine、GPU和CPU直接在设备上运行模型。它深度集成到Apple生态系统中,并针对Apple芯片进行了优化。
CoreML能做什么
CoreML在Apple专门优化过的视觉和传统NLP任务上表现出色:
- 图像分类和物体检测,通过Vision框架
- 文本分类和情感分析,通过Natural Language框架
- 声音分类,通过SoundAnalysis框架
- 手部姿态、身体姿态和人脸检测
- 设备端翻译(有限的语言对)
Apple通过Create ML和Apple开发者文档提供预训练模型。你也可以使用coremltools从PyTorch或TensorFlow转换模型。
CoreML不能做什么
CoreML不支持运行大型语言模型进行文本生成、聊天或复杂推理。没有原生支持通过CoreML运行GPT风格的模型来产生对话响应。Apple的端侧语言功能仅限于特定的、狭窄的任务。
集成模式
import CoreML
import Vision
// 图像分类示例
let model = try VNCoreMLModel(for: MobileNetV2().model)
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first else { return }
print("\(topResult.identifier): \(topResult.confidence)")
}
let handler = VNImageRequestHandler(cgImage: image)
try handler.perform([request])成本
零。CoreML推理在设备上本地运行,没有API调用,没有按请求的费用。
最适合
视觉任务(照片分类、条码扫描、人脸检测)、文本分类、声音分析。Apple提供优化模型的任务,或你可以用Create ML训练自定义分类器的任务。
路径2:云API
从iOS应用调用外部API(OpenAI、Anthropic、Google)。模型在提供商的服务器上运行。你的应用发送请求并 接收响应。
云API能做什么
一切。GPT-4o、Claude 3.5 Sonnet和Gemini等前沿模型可以处理复杂推理、创意生成、多轮对话、代码生成以及需要广泛世界知识的任务。
集成模式
func chat(_ message: String) async throws -> String {
var request = URLRequest(url: URL(string: "https://api.openai.com/v1/chat/completions")!)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body: [String: Any] = [
"model": "gpt-4o-mini",
"messages": [["role": "user", "content": message]]
]
request.httpBody = try JSONSerialization.data(withJSONObject: body)
let (data, _) = try await URLSession.shared.data(for: request)
// 解析并返回响应
}成本
按令牌计费。GPT-4o-mini每百万输入/输出令牌收费$0.15/$0.60。10K MAU每天3次交互,预计每月$300-$1,000+,取决于系统提示词和对话历史。
最适合
原型验证。需要前沿推理处理新输入的任务。非常低用量的功能。需要访问当前世界知识的功能。
iOS上的缺点
网络依赖(离线、地铁、飞行模式时失败)。延迟(每次响应500ms-3s)。隐私(用户数据发送到第三方服务器,必须在App Store隐私标签中披露)。成本随每个用户增长。