96SEO 2026-02-19 22:05 40
。

但是如果你仔细看了会发现#xff0c;其实代码还是不全的。
比如分词器我们就没讲。
再有#xff0c;对于13B需要多少显存我们…2023年的深度学习入门指南(22)
不知道上一讲的大段代码大家看晕了没有。
但是如果你仔细看了会发现其实代码还是不全的。
比如分词器我们就没讲。
再有对于13B需要多少显存我们也没说。
13B光是模型加载就需要26GB的显存加上推理需要的消i耗没有个28GB以上的显存是比较悬的。
恰好24GB的3090和4090单卡不够用。
百川官方在13b的开源代码中给我们提供了命令行交互式的应用和Web服务的基本框架。
AutoModelForCausalLM.from_pretrained(baichuan-inc/Baichuan-13B-Chat,torch_dtypetorch.float16,device_mapauto,trust_remote_codeTrue)model.generation_config
GenerationConfig.from_pretrained(baichuan-inc/Baichuan-13B-Chat)tokenizer
AutoTokenizer.from_pretrained(baichuan-inc/Baichuan-13B-Chat,use_fastFalse,trust_remote_codeTrue)return
Windows:os.system(cls)else:os.system(clear)print(Fore.YELLOW
clear_screen()continueprint(Fore.CYAN
end)continuemessages.append({role:
streamTrue):print(response[position:],
torch.backends.mps.is_available():torch.mps.empty_cache()except
KeyboardInterrupt:passprint()else:response
torch.backends.mps.is_available():torch.mps.empty_cache()messages.append({role:
response})print(Style.RESET_ALL)if
__main__:main()调用模型的部分大家都比较熟悉了这里唯一值得说一说的反而是显示格式相关的colorama库。
Style.NORMAL)系统提示为黄色而用户输入为绿色百川的回复为青色。
Streamlit封装了很多常用的前端组件比如对话这样的高级组件就是用st.chat_message()来实现的。
avatar):st.markdown(您好我是百川大模型很高兴为您服务)我们把上面的文件存为test1.py然后在命令行运行
avatar):这一行创建了一个聊天消息的上下文管理器消息的发送者是
st.markdown(您好我是百川大模型很高兴为您服务)这行代码在上述的
好下面我们把用户输入的功能加进来使用st.chat_input()就可以实现不需要写javascript代码
avatar):st.markdown(您好我是百川大模型很高兴为您服务)if
avatar):st.markdown(prompt)运行效果如下
stst.set_page_config(page_titleBaichuan-13B-Chat)
st.title(Baichuan-13B-Chat)with
avatar):st.markdown(您好我是百川大模型很高兴为您服务)if
avatar):st.markdown(prompt)理解了上面的基础知识之后我们就直接看百川的代码吧
GenerationConfigst.set_page_config(page_titleBaichuan-13B-Chat)
st.title(Baichuan-13B-Chat)st.cache_resource
AutoModelForCausalLM.from_pretrained(baichuan-inc/Baichuan-13B-Chat,torch_dtypetorch.float16,device_mapauto,trust_remote_codeTrue)model.generation_config
GenerationConfig.from_pretrained(baichuan-inc/Baichuan-13B-Chat)tokenizer
AutoTokenizer.from_pretrained(baichuan-inc/Baichuan-13B-Chat,use_fastFalse,trust_remote_codeTrue)return
avatar):st.markdown(您好我是百川大模型很高兴为您服务)if
st.session_state.messages:avatar
avataravatar):st.markdown(message[content])else:st.session_state.messages
avatar):st.markdown(prompt)messages.append({role:
streamTrue):placeholder.markdown(response)if
torch.backends.mps.is_available():torch.mps.empty_cache()messages.append({role:
response})print(json.dumps(messages,
如果想要在消费级的单卡上运行百川13b的推理需要对模型进行量化。
百川13b支持8位和4位的量化。
8位量化之后需要18.6G以上的显存。
4位量化之后需要11.5GB以上的显存。
同时CPU在实现量化的时候需要36.1G的内存32G的不太够用。
AutoTokenizer.from_pretrained(baichuan-inc/Baichuan-13B-Chat,
AutoModelForCausalLM.from_pretrained(baichuan-inc/Baichuan-13B-Chat,
GenerationConfig.from_pretrained(baichuan-inc/Baichuan-13B-Chat)
马匹质量高亚历山大所处的马其顿地区盛产优质战马这些马匹体型高大、速度快、耐力强非常适合进行战斗。
这使得他的骑兵在战场上具有很高的机动性和冲击力。
2.
训练有素亚历山大的骑兵经过严格的训练能够熟练地使用武器和战术。
他们不仅擅长冲锋陷阵还能够在战场上灵活地进行迂回、包抄等行动对敌军造成严重打击。
3.
装备精良亚历山大的骑兵装备了当时最先进的武器和护具如长矛、弓箭、盾牌等。
这些武器既能有效保护士兵又能给予敌人沉重的打击。
此外他们还配备了马镫使骑士在马背上更加稳定提高了战斗效率。
4.
严密的组织和指挥亚历山大的骑兵在战场上有严密的组织和指挥体系。
他们通过旗帜、号角等方式进行通信确保部队之间的协同作战。
同时亚历山大本人作为统帅对骑兵战术有着深刻的理解能够根据战场情况制定合适的战略。
5.
强大的心理素质亚历山大的骑兵拥有极高的心理素质他们在战场上勇敢无畏敢于面对任何困难。
这种精神力量使得他们在战斗中始终保持旺盛的斗志成为一支不可小觑的力量。
综上所述亚历山大的骑兵之所以强大是因为他们拥有高质量的马匹、训练有素的士兵、精良的装备、严密的组织和卓越的领导。
这些因素共同铸就了一支强大的骑兵部队使得亚历山大大帝能够征服整个已知世界。
效果看来仍然不错哈。
model.quantize(8).cuda()改为model
AutoTokenizer.from_pretrained(baichuan-inc/Baichuan-13B-Chat,
AutoModelForCausalLM.from_pretrained(baichuan-inc/Baichuan-13B-Chat,
GenerationConfig.from_pretrained(baichuan-inc/Baichuan-13B-Chat)
训练和纪律亚历山大的军队以严格的训练和高水平的纪律著称。
他的士兵接受了高度专业的军事训练特别是在马术、射击技巧和战场战术方面。
这使得他们在战场上具有很高的机动性和战斗力。
2.
马匹质量亚历山大的骑兵使用的是高品质的战马这些马匹经过精挑细选具备出色的速度、耐力和力量。
这些马匹在战场上的表现优于其他国家的马匹使他们能够快速移动并有效地执行任务。
3.
装备精良亚历山大的骑兵配备了先进的武器和盔甲如长矛、弓箭和护胸甲等。
这些装备不仅提高了他们的战斗力还降低了伤亡率。
4.
战略优势亚历山大的骑兵在战争中发挥了重要作用尤其是在对付敌军步兵时。
他们的高速度和机动性使他们能够迅速突破敌人的防线为步兵提供支援。
此外骑兵还可以用于侦查敌情、切断补给线以及进行骚扰作战。
5.
领导力亚历山大的领导才能和卓越指挥使他的军队士气高涨。
他的士兵们对他充满信心愿意为他出生入死。
这种紧密的团队精神和忠诚使得亚历山大的骑兵在战场上具有强大的凝聚力和战斗力。
综上所述亚历山大的骑兵之所以强大是因为他们拥有高素质的士兵、优良的马匹、精良的装备、有效的战略以及卓越的领导力。
这些因素共同铸就了他们无与伦比的战斗力使他们在历史上留下了深刻的印记。
看起来也还不错哈。
我们来看下量化的实现在modeling_baichuan.py中的quantize其实就是把W,o和mlp的每一层都量化掉。
self.model.layers:layer.self_attn.W_pack
QLinear(bitsbits,weightlayer.self_attn.W_pack.weight,bias
QLinear(bitsbits,weightlayer.self_attn.o_proj.weight,bias
QLinear(bitsbits,weightlayer.mlp.gate_proj.weight,bias
QLinear(bitsbits,weightlayer.mlp.down_proj.weight,bias
QLinear(bitsbits,weightlayer.mlp.up_proj.weight,bias
self我们继续看下QLinear的实现其实就是把权重和偏置量化掉然后在forward的时候把输入也量化掉然后再做矩阵乘法最后再反量化回去。
self.scale。
这个缩放因子是通过将权重矩阵的绝对值取最大值然后除以
来计算的。
接下来根据量化位数的不同使用不同的方法对权重矩阵进行量化。
如果量化位数为
biasNone):super().__init__()self.quant_bits
torch.round(weight.to(self.scale.dtype)
的参数。
这个方法首先检查输入张量的数据类型是否符合要求并将权重矩阵和缩放因子转移到输入张量所在的设备上。
然后根据量化位数的不同使用不同的方法对权重矩阵进行反量化并与输入张量进行矩阵乘法运算。
如果偏置项不为
self.weight.to(input.device)self.scale
self.scale.to(input.dtype)rweight
self.scale.to(input.dtype)output
output量化的原理我们之前已经讲过了我们来看4位量化的实现我还是把注释写在代码行里
torch.cuda.current_stream()num_row
torch.clip(torch.round(weight.to(scale.dtype)
这一节我们进一步了解了百川13b大模型运行和量化的方法以及简要介绍了量化的原理。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback