1.进入开发机,创建新环境,安装必要的包
首先点击左上角图标,打开Terminal,运行如下脚本创建虚拟环境:
# 创建虚拟环境 conda create -n langgpt python=3.10 -y
运行下面的命令,激活虚拟环境:
conda activate langgpt
之后的操作都要在这个环境下进行。激活环境后,安装必要的Python包,依次运行下面的命令:
# 安装一些必要的库 conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y # 安装其他依赖 pip install transformers==4.43.3 pip install streamlit==1.37.0 pip install huggingface_hub==0.24.3 pip install openai==1.37.1 pip install lmdeploy==0.5.2
2.创建项目路径
运行如下命令创建并打开项目路径:
## 创建路径 mkdir langgpt ## 进入项目路径 cd langgpt
3.部署模型
由于服务需要持续运行,需要将进程维持在后台,所以这里使用tmux
软件创建新的命令窗口。运行如下命令创建窗口:
tmux new -t langgpt
创建完成后,运行下面的命令进入新的命令窗口(首次创建自动进入,之后需要连接):
tmux a -t langgpt
进入命令窗口后,需要在新窗口中再次激活环境,命令参考0.1节。然后,使用LMDeploy进行部署,参考如下命令:
使用LMDeploy进行部署,参考如下命令:
CUDA_VISIBLE_DEVICES=0 lmdeploy serve api_server /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --server-port 23333 --api-keys internlm2
更多设置,可以参考:Welcome to LMDeploy’s tutorials! — lmdeploy
部署成功后,可以利用如下脚本调用部署的InternLM2-chat-1_8b模型并测试是否部署成功。
from openai import OpenAI client = OpenAI( api_key = "internlm2", base_url = "http://0.0.0.0:23333/v1" ) response = client.chat.completions.create( model=client.models.list().data[0].id, messages=[ {"role": "system", "content": "请介绍一下你自己"} ] ) print(response.choices[0].message.content)
服务启动完成后,可以按Ctrl+B进入tmux
的控制模式,然后按D退出窗口连接,更多操作参考。
4.图形化界面调用
InternLM部署完成后,可利用提供的chat_ui.py
创建图形化界面,在实战营项目的tools项目中。
首先,从Github获取项目,运行如下命令:
git clone https://github.com/InternLM/Tutorial.git
下载完成后,运行如下命令进入项目所在的路径:
cd Tutorial/tools
进入正确路径后,运行如下脚本运行项目:
python -m streamlit run chat_ui.py
参考L0/Linux的2.3部分进行端口映射,在本地终端中输入映射命令,可以参考如下命令:
ssh -p {ssh端口,从InternStudio获取} root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no
启动界面:
测试
5.提示词工程
提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。
在模型回复的过程中,首先获取用户输入的文本,然后处理文本特征并根据输入文本特征预测之后的文本,原理为next token prediction。
提示工程是模型性能优化的基石,有以下六大基本原则:
- 指令要清晰
- 提供参考内容
- 复杂的任务拆分成子任务
- 给 LLM“思考”时间(给出过程)
- 使用外部工具
- 系统性测试变化
task:
-
背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为
13.8<13.11
。 -
任务要求:利用LangGPT优化提示词,使LLM输出正确结果。完成一次并提交截图即可
编写提示词:
“
- Role: 数值比较专家
- Background: 近期研究发现,大型语言模型(LLM)在处理浮点数比较时容易出错。用户需要一个能够准确比较浮点数的工具。
- Profile: 你是一位在数值比较领域具有丰富经验的专家,能够准确地识别和比较不同大小的浮点数。
- Skills: 你拥有数学和计算机科学的知识,能够理解浮点数的表示和比较机制,以及如何设计算法来准确比较它们。
- Goals: 创建一个能够准确比较两个浮点数大小的提示词,以解决LLM在这方面的不足。
- Constrains: 提示词应该简洁明了,易于理解和使用,同时确保比较结果的准确性。
- OutputFormat: 提供一个明确的比较结果,例如“A大于B”或“A小于B”。
- Workflow:
1. 接收两个待比较的浮点数。
2. 分析两个数的整数部分和小数部分。
3. 比较整数部分,如果整数部分不同,则整数部分大的数更大。
4. 如果整数部分相同,则比较小数部分,直到比较出大小。
5. 输出比较结果。
- Examples:
- 例子1:比较13.8和13.11
结果:13.8大于13.11
- 例子2:比较0.5和0.3
结果:0.5大于0.3
- 例子3:比较2.0和2.01
结果:2.0小于2.01
- Initialization: 在第一次对话中,请直接输出以下:您好,我是数值比较专家。请告诉我您想要比较的两个浮点数,我将为您提供准确的比较结果。
”