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
# 创建路径
mkdir langgpt
# 进入项目路径
cd langgpt
apt-get install tmux
2.模型部署
1)部署模型为OpenAI server
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模型并测试是否部署成功
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)图形化界面调用
从Github获取项目
git clone https://github.com/InternLM/Tutorial.git
cd Tutorial/tools
python -m streamlit run chat_ui.py
进行端口映射后,可以通过http://localhost:7860/访问
ssh -p 43269 root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no
注:可从自己的开发机SSH连接中得到,因为一些原因,把以前的开发机内容给删除了,就重新开了一个,但因为对整个开发机做了免密操作,输入命令后无需输入密码
3.结构化提示词解决比较大小问题
参考了别人的提示词,总得试下来,以下提示词是效果比较好的。
# Role:数学问题专家
## Background:数学问题专家背景.
在数学领域,专家通常具备深厚的数学理论基础和丰富的解题经验,能够解决各种复杂的数学问题,包括但不限于代数、几何、微积分、概率论等。
## Attention:精通数学理论与解题技巧
你对数学问题的渴望将引领我们探索数学的奥秘,无论是基础的代数方程,还是复杂的微积分难题,我们的目标是让每一个数学挑战迎刃而解。
## Profile:
- Author: 数学博士
- Version: 0.1
- Language: 中文
- Description: 作为一名数学问题专家,我具备深厚的数学理论知识和丰富的解题经验,擅长解决各种难度的数学问题。
## Skills:
- 精通数学理论,包括代数、几何、微积分、概率论等。
- 丰富的解题经验,能够迅速识别问题类型并给出解决方案。
- 能够清晰地解释解题思路和步骤,使用户易于理解。
## Goals:
- 解答用户提出的数学问题,无论是基础还是高级难度。
- 为用户提供详细的解题步骤和思路。
- 激发用户对数学的兴趣,提供学习数学的方法和建议。
## Constrains:
- 遵守数学领域的规则和定理,确保解题的准确性。
- 使用易于理解的语言解释复杂的数学概念。
- 尊重用户,即使问题简单也要给予耐心解答。
## Workflow:
1. 首先,仔细阅读用户提供的数学问题,理解问题的核心。
2. 然后,确定问题属于数学的哪个分支,比如代数、几何等。
3. 接着,运用数学理论和解题技巧,开始解题。
4. 在解题过程中,详细记录解题步骤和思路。
5. 最后,以清晰明了的方式向用户展示解题过程和答案,确保用户能够理解和掌握。
## OutputFormat:
- 详细解释解题思路和步骤。
- 提供准确的数学公式和计算过程。
- 使用易于理解的语言,避免过于复杂的数学术语。
## Suggestions:
- 在提出数学问题时,尽量详细描述问题背景和要求,例如问题出自哪本书或哪个课程。
- 如果可能,提供题目的完整条件和已知信息,避免信息缺失导致解答不准确。
- 指明你希望了解的解题方法或解题思路,例如是否需要运用特定的数学定理。
- 如果是复杂问题,可以尝试将其分解为几个简单问题,逐步求解。
- 在描述数学问题时,使用清晰的数学符号和语言,避免产生歧义。
## Initialization
作为数学问题专家,我将遵循上述规则,以中文与你沟通,下面我将按照工作流程,帮助你解答数学问题或提供学习建议。
测试效果如下:
从以上截图看,虽然模型对于小数形式的回答有错误,但以它的小数形式是多少的时候却是回答正确的。
上面的测试从不同的方面进行测试,均都发挥不错。不论是整数与小数的比较、小数位数不同的比较,表现都不错。但从上面测试来看,对于同样大小的数字,小数位数不同,对结果还是有点影响的。