这是一个实用工具的集合,旨在帮助在 Swift 应用程序中采用语言模型。它尽可能地遵循 Python transformers 的 API 和抽象概念,但也致力于提供符合 Swift 语言习惯的接口,并且不要求用户事先熟悉 transformers 或 tokenizers。
请查看我们的文章。
Tokenizers. 用于将文本转换为 tokens 并进行反向转换的实用程序。遵循 tokenizers 和 transformers.js 中的抽象概念。用法示例import Tokenizers
func testTokenizer() async throws {
let tokenizer = try await AutoTokenizer.from(pretrained: "pcuenq/Llama-2-7b-chat-coreml")
let inputIds = tokenizer("Today she took a train to the West")
assert(inputIds == [1, 20628, 1183, 3614, 263, 7945, 304, 278, 3122])
}
但是,您通常不需要自己对输入文本进行分词 - Generation 代码会处理它。
Hub. 用于从 Hub 下载配置文件,实例化 tokenizers 并了解语言模型特征的实用程序。
Generation. 用于文本生成的算法。目前支持贪婪搜索和 top-k 抽样。
Models. 基于 Core ML 包的语言模型抽象。
此软件包已使用以下自回归语言模型进行了测试:
目前不支持编码器-解码器模型,如 T5 和 Flan。它们在我们优先级列表中的位置很高。
swift-chat,一个演示如何使用此软件包的简单应用程序。exporters,一个基于 Apple 的 coremltools 的 transformers 模型 Core ML 转换软件包。transformers-to-coreml,一个基于 exporters 构建的无需编写代码的 Core ML 转换工具。要将 swift-transformers 与 SwiftPM 一起使用,您可以将其添加到您的 Package.swift 中
dependencies: [
.package(url: "https://github.com/huggingface/swift-transformers", from: "0.1.5")
]
然后,将 Transformers 库作为依赖项添加到您的目标
targets: [
.target(
name: "YourTargetName",
dependencies: [
.product(name: "Transformers", package: "swift-transformers")
]
)
]
tokenizers 移植tokenizer_config.json,其模型在 Hub 中没有配置exporters – Core ML 转换工具。logitscoremltools @ main 获取最新修复。特别是,此已合并的 PR 使使用最新版本的 transformers 更加容易。Accelerate 中的新 top-k 实现。