苹果 Transformer 的“秘密”,让发烧友给扒出来了。
大模型浪潮下,即使保守如苹果,也每逢发布会必提“Transformer”。
比如,在今年的 WWDC 上,苹果就已宣布,船新版本的 iOS 和 macOS 将内置 Transformer 语言模型,以提供带文本预测功能的输入法。
苹果官方没有透露更多信息,但技术爱好者们可坐不住了。
一位名叫 Jack Cook 的小哥,就把 macOS Sonoma beta 翻了个底朝天,结果,还真挖出不少新鲜信息:
模型架构上,Cook 小哥认为苹果的语言模型更像是基于 GPT-2 打造的。
在分词器(tokenizer)方面,表情符号在其中十分突出。
更多细节,一起来看。
先来回顾一下苹果基于 Transformer 的语言模型能在 iPhone、MacBook 等设备上实现怎样的功能。
主要体现在输入法方面。语言模型加持下的苹果自带输入法,可以实现单词预测和纠错的功能。
Jack Cook 小哥具体测试了一下,发现这个功能主要实现的是针对单个单词的预测。
模型有时也会预测即将出现的多个单词,但这仅限于句子语义十分明显的情况,比较类似于 Gmail 里的自动完成功能。
那么这个模型具体被装在了哪里?一通深入挖掘之后,Cook 小哥确定:
我在 /System/ Library / LinguisticData / RequiredAssets_en.bundle/ AssetData / en.lm/ unilm.bundle 中找到了预测文本模型。
原因是:
1、unilm.bundle 中的许多文件在 macOS Ventura(13.5)里并不存在,仅出现在了新版本 macOS Sonoma beta(14.0)里。
2、unilm.bundle 中存在一个 sp.dat 文件,这在 Ventura 和 Sonoma beta 里都能找到,但 Sonoma beta 的版本中更新了明显像是分词器的一组 token。
3、sp.dat 中 token 的数量跟 unilm.bundle 中的两个文件 ——unilm_joint_cpu.espresso.shape 和 unilm_joint_ane.espresso.shape 能匹配得上。这两个文件描述了 Espresso / CoreML 模型中各层的形状。
进而,小哥根据 unilm_joint_cpu 中描述的网络结构,推测苹果模型是基于 GPT-2 架构打造的:
主要包含 token embeddings、位置编码、解码器块和输出层,每个解码器块中都有类似 gpt2_transformer_layer_3d 这样的字眼。
根据每层大小,小哥还推测,苹果模型约有 3400 万参数,隐藏层大小是 512。也就是说,它比 GPT-2 最小的版本还要小。
小哥认为,这主要是因为苹果想要一种不太耗电,但同时能够快速、频繁运行的模型。
而苹果官方在 WWDC 上的说法是,“每点击一个键,iPhone 就会运行模型一次”。
不过,这也就意味着,这个文本预测模型并不能很好地完整续写句子或段落。
模型架构之外,Cook 小哥还挖出了分词器(tokenizer)的相关信息。
他在 unilm.bundle/ sp.dat 里发现了一组数量为 15000 的 token,值得关注的是,其中包含 100 个 emoji。
尽管此 Cook 非彼库克,小哥的博客文章一发出,还是吸引了不少关注。
基于他的发现,网友们热烈地讨论起苹果在用户体验和前沿技术应用之间的平衡大法。
回到 Jack Cook 本人,他本科和硕士毕业于 MIT 的计算机专业,目前还在攻读牛津大学的互联网社会科学硕士学位。
此前,他曾在英伟达实习,专注于 BERT 等语言模型的研究。他还是《纽约时报》的自然语言处理高级研发工程师。
那么,他的这一番揭秘是否也引发了你的一些思考?欢迎在评论区分享观点~
原文链接:
https://jackcook.com/2023/09/08/predictive-text.html
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,果粉控所有文章均包含本声明。