LLM面面观之Prefix LM vs Causal LM

1. 背景

关于Prefix LM和Causal LM的区别,本qiang在网上逛了一翻,发现多数客官只给出了结论,但对于懵懵的本qiang,结果仍是懵懵...

因此,消遣了多半天,从原理及出处,交出了Prefix LM和Causal LM两者区别的更为清楚的说明

2. Prefix LM

Prefix LM,即前缀语言模型,该结构是Google的T5模型论文起的名字,望文知义来说,这个模型的”前缀”有些内容,但继续向前追溯的话,微软的UniLM已经提及到了。

Prefix LM其实是Encoder-Decoder模型的变体,为什么这样说?解释如下:

(1) 在标准的Encoder-Decoder模型中,Encoder和Decoder各自使用一个独立的Transformer

( 2) 而在Prefix LM,Encoder和Decoder则共享了同一个Transformer结构,在Transformer内部通过Attention Mask机制来实现。

继续展开下Attention Mask机制,马上主题就有解了!

与标准Encoder-Decoder类似,Prefix LM在Encoder部分采用Auto Encoding (AE-自编码)模式,即前缀序列中任意两个token都相互可见,而Decoder部分采用Auto Regressive  (AR-自回归)模式,即待生成的token可以看到Encoder侧所有token(包括上下文)和Decoder侧已经生成的token,但不能看未来尚未产生的token。

下面的图很形象地解释了Prefix LM的Attention Mask机制(左)及流转过程(右)。

        

Prefix LM的代表模型有UniLM、T5、GLM(清华滴~)

3. Causal LM

了解了Prefix LM后,再来看Causal LM就简单的多了~

Causal LM是因果语言模型,目前流行地大多数模型都是这种结构,别无他因,因为GPT系列模型内部结构就是它,还有开源界的LLaMa也是。

Causal LM只涉及到Encoder-Decoder中的Decoder部分,采用Auto Regressive模式,直白地说,就是根据历史的token来预测下一个token,也是在Attention Mask这里做的手脚。

参照着Prefix LM,可以看下Causal LM的Attention Mask机制(左)及流转过程(右)。

        

Ps(图真是个好东西,一图胜万字呀)

4. 如何选取

两种结构均能生成文本,应该如何选择呢?只能说仁智见仁智。本qiang也搜寻了一番,有一篇google的论文,从理论上推导了Causal LM在情境学习(In-Context Learning)中比不上Prefix LM,感兴趣地客官可以看看论文。

5. 总结

一句话足矣~

前缀语言模型可以根据给定的前缀生成后续的文本,而因果语言模型只能根据之前的文本生成后续的文本。

6. 参考

(1) google T5: https://arxiv.org/pdf/1910.10683v4.pdf

(2) 微软UniLM: https://arxiv.org/pdf/1905.03197.pdf

(3) google理论评估PLM与CLM: https://arxiv.org/pdf/2308.06912.pdf

### 集成LM API到VS Code 为了在 VS Code 中集成 LM API 或者使用 VS Code 开发 LM API,可以遵循一系列特定的操作流程。这些操作不仅涉及环境设置还包括具体的编码实践。 #### 设置开发环境 确保已安装最新版本的 Visual Studio Code 和 Python 解释器。对于那些希望利用本地大语言模型LLM)如通过 LM Studio 来增强编程体验的人而言,在 Windows 上运行意味着选择了合适的平台支持工具[^1]。 #### 安装必要的扩展 针对想要提升代码编写效率并探索 AI 辅助功能的开发者来说,可以通过安装像 Cline 这样的插件来实现与 LLM 的交互。Cline 插件允许用户轻松调用各种预训练的语言模型服务,并将其无缝嵌入日常编辑工作流之中[^3]。 ```bash code --install-extension cline.cline ``` #### 获取API密钥 当涉及到实际调用远程托管的服务时,则需要获取相应的 API 密钥以便授权访问。这一步骤通常由所选用的具体服务商提供指导完成。例如,如果计划采用某些商业化的解决方案,则应按照官方文档指示注册账号并申请专属令牌。 #### 编写Python脚本来测试API连接性 一旦拥有了有效的认证凭证之后就可以开始着手构建简单的应用程序接口(API)客户端逻辑了。下面给出了一段用于验证能否成功发起请求至目标服务器端点的小型示范程序: ```python import requests api_key = "your_api_key_here" url = f"https://example.com/api/v1/models?api_key={api_key}" response = requests.get(url) if response.status_code == 200: print("Connection successful!") else: print(f"Failed to connect, status code {response.status_code}") ``` 上述代码片段展示了如何发送 GET 请求以检查是否能够正常通信;当然也可以根据需求调整为 POST 方法提交更复杂的数据结构体作为输入参数传递给后端处理单元解析执行相应任务。 #### 使用本地模型进行推理 除了依赖云端资源外,还可以考虑直接加载预先下载好的权重文件来进行离线预测分析作业。这种方法特别适合于网络条件不佳或者出于隐私保护考量不愿上传敏感资料的情形下应用。借助于诸如 Hugging Face Transformers 库的支持,只需几行简洁明了的命令即可快速上手尝试不同的架构组合效果对比评估。 ```python from transformers import pipeline nlp_pipeline = pipeline('text-generation', model='path_to_local_model') result = nlp_pipeline("Once upon a time") print(result) ``` 此部分介绍了两种主要方式——在线模式下的 RESTful Web Service 接口调用以及线下环境中基于框架封装后的便捷函数调用来满足不同场景下的灵活切换诉求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值