swift-transformers
是一个实用工具集合,旨在帮助在 Swift 应用程序中采用语言模型。
它尽可能遵循 Python transformers
的 API 和抽象概念,但同时也致力于提供符合 Swift 语言习惯的接口,并且不假定用户事先熟悉 transformers
或 tokenizers
。
请查看 我们的发布公告。
Tokenizers
:用于将文本转换为 token 并进行反向转换的实用工具,支持 Chat Templates 和 Tools。遵循 tokenizers
中的抽象概念。 使用示例import Tokenizers
func testTokenizer() async throws {
let tokenizer = try await AutoTokenizer.from(pretrained: "deepseek-ai/DeepSeek-R1-Distill-Qwen-7B")
let messages = [["role": "user", "content": "Describe the Swift programming language."]]
let encoded = try tokenizer.applyChatTemplate(messages: messages)
let decoded = tokenizer.decode(tokens: encoded)
}
Hub
:用于与 Hugging Face Hub 交互的实用工具!下载模型、tokenizer 和其他配置文件。 使用示例import Hub
func testHub() async throws {
let repo = Hub.Repo(id: "mlx-community/Qwen2.5-0.5B-Instruct-2bit-mlx")
let filesToDownload = ["config.json", "*.safetensors"]
let modelDirectory: URL = try await Hub.snapshot(
from: repo,
matching: filesToDownload,
progressHandler: { progress in
print("Download progress: \(progress.fractionCompleted * 100)%")
}
)
print("Files downloaded to: \(modelDirectory.path)")
}
Generation
:用于文本生成的算法。在内部处理 token 化。 目前支持的算法有:贪婪搜索、top-k 采样和 top-p 采样。Models
:基于 Core ML 包的语言模型抽象。要将 swift-transformers
与 SwiftPM 一起使用,您可以将其添加到您的 Package.swift
文件中
dependencies: [
.package(url: "https://github.com/huggingface/swift-transformers", from: "0.1.17")
]
然后,将 Transformers 库作为依赖项添加到您的目标中
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(name: "Transformers", package: "swift-transformers")
]
)
]
在您的项目中使用 swift-transformers
吗?请告诉我们,我们会将您添加到列表中!
您可以使用 swift-transformers
在 Core ML 模型上运行推理。 请注意,使用 Tokenizers
或 Hub
模块不需要 Core ML。
此软件包已经过自回归语言模型的测试,例如
目前不支持编码器-解码器模型,如 T5 和 Flan。
swift-chat
,一个简单的应用程序,演示如何使用此软件包。exporters
,一个基于 Apple 的 coremltools
的 transformers 模型的 Core ML 转换包。transformers-to-coreml
,一个基于 exporters
构建的无代码 Core ML 转换工具。Swift Transformers 是一个社区项目,我们欢迎贡献。 如果您正在寻找一个入门的地方,请查看标记为 good first issue
的 Issues!
请确保您的代码在提交拉取请求之前通过构建和测试套件。您可以使用 swift test
运行测试。