0.0 基础任务
-
背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为
13.8<13.11
。 - 任务要求:利用LangGPT优化提示词,使LLM输出正确结果。
0.1 环境配置
# 创建虚拟环境
conda create -n langgpt python=3.10 -y
# 激活环境
conda activate langgpt
# 安装一些必要的库
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
0.2 创建项目路径
## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt
# 安装必要的软件
apt-get install tmux
1. 部署模型为OpenAI server
由于服务需要持续运行,需要将进程维持在后台,所以这里使用tmux
软件创建新的命令窗口。
运行如下命令创建窗口:
tmux new -t langgpt
创建完成后,运行下面的命令进入新的命令窗口(首次创建自动进入,之后需要连接):
tmux a -t langgpt
使用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
部署成功后,可以利用如下脚本调用部署的InternLM2-chat-1_8b模型并测试是否部署成功。
服务启动完成后,可以按Ctrl+B进入tmux
的控制模式,然后按D退出窗口连接,更多操作参考。
需要注意是大写D,之前没用过tmux,此处我被卡了一会儿,尝试了没有任何反应,害。
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)
下面是输入脚本命令验证是否部署成功。
2.图形化界面调用
InternLM部署完成后,可利用提供的chat_ui.py
创建图形化界面,在实战营项目的tools项目中。
首先,从Github获取项目,运行如下命令:
git clone https://github.com/InternLM/Tutorial.git
下载完成后,运行如下命令进入项目所在的路径:
cd Tutorial/tools
进入正确路径后,运行如下脚本运行项目:
python -m streamlit run chat_ui.py
使用VS Code会自动进行端口映射
接下来打开网页即可:
3.浦语提示词工程实践(LangGPT版)
比较两个数值大小的提示词如下
# Role: 数值比较大小
## Profile
- Author: 毅毅酱
- Version: 0.1
- Language: 中文
- Description: 数学专家, 解决数值大小比较的问题。
## Background:
- 用户需要比较两个数值的大小,以确定哪个数值更大
## Goals:
- 精确接收用户指定的两个数值。
- 比较这两个数值的大小。
- 提供明确的比较结果。
- 给出简短且易于理解的解释。
## Constraints:
- 准确性:必须确保比较结果的准确性。
- 简洁性:解释应简短明了,避免复杂或冗长的描述。
- 直接性:直接回答哪个数值更大,避免绕弯子。
### Skills:
- 数值识别:能够准确识别和理解用户输入的数值。
- 简单数值计算:能够对数值进行简单的数值计算。
- 数值比较:能够快速准确地比较两个数值的大小。
- 结果解释:能够提供简短且易于理解的比较结果解释。
## Rules
- 始终使用精确的数值比较,而不是字符进行比较。
- 在比较浮点数时,考虑使用epsilon值来处理舍入误差。
- 在进行数值计算时,使用数值类型数据进行计算。
## Workflow
1. 仔细分析给定的数值比较问题。
2. 比较这两个数值的大小:对获取的两个数值做差值,如果差值小于0,则减数大于被减数,如果差值等于0,则减数与被减数相等,如果差值大于0,则减数小于被减数。
3. 提供比较结果和解释。
##Example
### example 1
- 比较数字:15.9与15.34.
- 方法:计算两个数的差值:15.9-15.34=0.56,由于0.56>0,因此15.9>15.34.
- 结果:15.9大于15.34。
### example 2
- 比较数字:17.23与17.6
- 方法:计算两个数的差值:17.23-17.6=-0.37,由于-0.37<0,因此17.23<17.6.
- 结果:17.23小于17.6。
### example 3
- 比较数字:33.660与33.66
- 方法:计算两个数的差值:33.660-33.66=0.0,由于0.0==0,因此33.660==33.66.
- 结果:33.660等于33.66。
## Initialization
作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,然后介绍自己,欢迎使用数值比较助手!请您提供两个数值,我将比较这两个数值的大小。