同里做网站,青岛网站建设企业建站,凤岗镇网站建设,linux 国外网站一、前言 GLM-4是智谱AI团队于2024年1月16日发布的基座大模型#xff0c;旨在自动理解和规划用户的复杂指令#xff0c;并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等#xff0c;支持128K的上下文窗口#xff0c;使其在长文本处理和精度召回方面表现优异旨在自动理解和规划用户的复杂指令并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等支持128K的上下文窗口使其在长文本处理和精度召回方面表现优异且在中文对齐能力上超过GPT-4。与之前的GLM系列产品相比GLM-4在各项性能上提高了60%并且在指令跟随和多模态功能上有显著强化适合于多种应用场景。尽管在某些领域仍逊于国际一流模型GLM-4的中文处理能力使其在国内大模型中占据领先地位。该模型的研发历程自2020年始经过多次迭代和改进最终构建出这一高性能的AI系统。 在前一篇开源模型应用落地-glm模型小试-glm-4-9b-chat-快速体验一已经掌握了glm-4-9b-chat的基本入门本篇将介绍如何进行批量推理。 二、术语
2.1.GLM-4-9B 是智谱 AI 推出的一个开源预训练模型属于 GLM-4 系列。它于 2024 年 6 月 6 日发布专为满足高效能语言理解和生成任务而设计并支持最高 1M约两百万字的上下文输入。该模型拥有更强的基础能力支持26种语言并且在多模态能力上首次实现了显著进展。
GLM-4-9B的基础能力包括
- 中英文综合性能提升 40%在特别的中文对齐能力、指令遵从和工程代码等任务中显著增强
- 较 Llama 3 8B 的性能提升尤其在数学问题解决和代码编写等复杂任务中表现优越
- 增强的函数调用能力提升了 40% 的性能
- 支持多轮对话还支持网页浏览、代码执行、自定义工具调用等高级功能能够快速处理大量信息并给出高质量的回答
2.2.GLM-4-9B-Chat 是智谱 AI 在 GLM-4-9B 系列中推出的对话版本模型。它设计用于处理多轮对话并具有一些高级功能使其在自然语言处理任务中更加高效和灵活。 2.3.推量推理 是指在一次模型推理过程中同时处理多个输入样本而不是逐个处理。通过这种方式可以充分利用计算资源提高处理效率降低延迟。 三、前置条件
3.1.基础环境及前置条件 1. 操作系统centos7 2. NVIDIA Tesla V100 32GB CUDA Version: 12.2 3.最低硬件要求 3.2.下载模型
huggingface
https://huggingface.co/THUDM/glm-4-9b-chat/tree/main ModelScope
魔搭社区 使用git-lfs方式下载示例 3.3.创建虚拟环境
conda create --name glm4 python3.10
conda activate glm4
3.4.安装依赖库
pip install torch2.5.0
pip install torchvision0.20.0
pip install transformers4.46.0
pip install huggingface-hub0.25.1
pip install sentencepiece0.2.0
pip install jinja23.1.4
pip install pydantic2.9.2
pip install timm1.0.9
pip install tiktoken0.7.0
pip install numpy1.26.4
pip install accelerate1.0.1
pip install sentence_transformers3.1.1
pip install gradio4.44.1
pip install openai1.51.0
pip install einops0.8.0
pip install pillow10.4.0
pip install sse-starlette2.1.3
pip install bitsandbytes0.43.3 四、技术实现
4.1.批量推理
# -*- coding: utf-8 -*-
from typing import Unionimport torch
from transformers import AutoTokenizer, LogitsProcessorList, AutoModelForCausalLMmodelPath /data/model/glm-4-9b-chatdef loadTokenizer():tokenizer AutoTokenizer.from_pretrained(modelPath, trust_remote_codeTrue)return tokenizerdef loadModel():model AutoModelForCausalLM.from_pretrained(modelPath,torch_dtypetorch.float16,trust_remote_codeTrue,device_mapauto).eval()return modeldef process_model_outputs(inputs, outputs, tokenizer):responses []for input_ids, output_ids in zip(inputs.input_ids, outputs):response tokenizer.decode(output_ids[len(input_ids):], skip_special_tokensTrue).strip()responses.append(response)return responsesdef batch(model,tokenizer,messages: Union[str, list[str]],max_input_tokens: int 8192,max_new_tokens: int 8192,num_beams: int 1,do_sample: bool True,top_p: float 0.8,temperature: float 0.8,logits_processorNone,
):if logits_processor is None:logits_processor LogitsProcessorList()messages [messages] if isinstance(messages, str) else messagesbatched_inputs tokenizer(messages,return_tensorspt,paddingmax_length,truncationTrue,max_lengthmax_input_tokens).to(model.device)gen_kwargs {max_new_tokens: max_new_tokens,num_beams: num_beams,do_sample: do_sample,top_p: top_p,temperature: temperature,logits_processor: logits_processor,eos_token_id: model.config.eos_token_id}batched_outputs model.generate(**batched_inputs, **gen_kwargs)batched_response process_model_outputs(batched_inputs, batched_outputs, tokenizer)return batched_responseif __name__ __main__:batch_message [[{role: system, content: 你是一位专业的导游},{role: user, content: 请推荐一些广州的特色景点}],[{role: system, content: 你是一位专业的算命先生},{role: user, content: 请给我儿子取一个名字}],[{role: system, content: 你是一位专业的数学老师},{role: user, content: 请解这道计算题3.1*9.910.1}]]tokenizer loadTokenizer()model loadModel()batch_inputs []max_input_tokens 1024for i, messages in enumerate(batch_message):new_batch_input tokenizer.apply_chat_template(messages, add_generation_promptTrue, tokenizeFalse)max_input_tokens max(max_input_tokens, len(new_batch_input))batch_inputs.append(new_batch_input)gen_kwargs {max_input_tokens: max_input_tokens,max_new_tokens: 8192,do_sample: True,top_p: 0.9,temperature: 0.6,num_beams: 1,}batch_responses batch(model, tokenizer, batch_inputs, **gen_kwargs)for response in batch_responses:print(- * 30)print(response)
调用结果 (glm4) [rootgpu test]# python -u glm4_9b_chat_test.py
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████| 10/10 [00:1000:00, 1.01s/it]
------------------------------
当然可以广州作为我国历史文化名城拥有众多特色景点。以下是广州的一些著名景点推荐1. **广州塔小蛮腰**广州的地标性建筑可以登塔观光俯瞰整个广州城市风貌。2. **白云山**广州市内著名的风景区有多个登山步道和观景台是徒步和休闲的好去处。3. **广州动物园**位于越秀山内是中国最早建立的动物园之一拥有丰富的动物种类。4. **陈家祠**位于荔湾区是一座具有岭南特色的传统建筑是了解岭南建筑风格的好地方。5. **长隆旅游度假区**包括长隆野生动物世界、长隆水上乐园、长隆国际大马戏等多个主题公园适合家庭游玩。6. **珠江夜游**乘坐游船夜游珠江欣赏两岸的夜景感受广州的繁华。7. **广州博物馆**位于越秀山内可以了解广州的历史文化。8. **广州起义纪念馆**纪念1927年广州起义了解这段历史。9. **南越王墓博物馆**位于越秀山是西汉南越王赵眜的陵墓是研究岭南地区古代文化的宝贵资料。10. **上下九步行街**广州著名的购物街汇集了各种小吃和购物场所是体验广州传统商业文化的好地方。这些景点各有特色可以让您全面了解广州的历史、文化和现代风貌。希望您在广州的旅行愉快
------------------------------
当然可以。根据中国传统命名文化我为您的儿子取名为“瑞宇”。其中“瑞”字寓意吉祥如意好运连连“宇”字则代表宇宙、广阔希望您的儿子能够胸怀宽广前程似锦。这个名字既富有文化内涵又充满美好祝愿。
------------------------------
好的我们来解这个计算题。首先计算乘法部分
3.1 * 9.9 30.69然后将乘法的结果加上10.1
30.69 10.1 40.79所以3.1 * 9.9 10.1 的结果是 40.79。 五、附带说明
5.1.问题一 undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12
解决
export LD_LIBRARY_PATH/usr/local/miniconda3/envs/glm4/lib/python3.10/site-packages/nvidia/nvjitlink/lib:$LD_LIBRARY_PATH