这是一个实用工具的集合,旨在帮助在 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 转换工具。logits
coremltools
@ main
获取最新修复。特别是,此已合并的 PR 使使用最新版本的 transformers 更加容易。Accelerate
中的新 top-k
实现。