# OPENAI API DEMO
> 更加详细的OPENAI API信息:<https://platform.openai.com/docs/api-reference>
这是一个使用fastapi实现的简易的仿OPENAI API风格的服务器DEMO,您可以使用这个API DEMO来快速搭建基于中文大模型的个人网站以及其他有趣的WEB DEMO。
## 部署方式
安装依赖
``` shell
pip install fastapi uvicorn shortuuid
```
启动脚本
``` shell
python scripts/openai_server_demo/openai_api_server.py --base_model /path/to/base_model --lora_model /path/to/lora_model --gpus 0,1
```
### 参数说明
`--base_model {base_model}`:存放HF格式的LLaMA模型权重和配置文件的目录,可以是合并后的中文Alpaca或Alpaca Plus模型(此时无需提供`--lora_model`),也可以是转后HF格式后的原版LLaMA模型(需要提供`--lora_model`)
`--lora_model {lora_model}`:中文Alpaca LoRA解压后文件所在目录,也可使用🤗Model Hub模型调用名称。若不提供此参数,则只加载--base_model指定的模型
`--tokenizer_path {tokenizer_path}`:存放对应tokenizer的目录。若不提供此参数,则其默认值与`--lora_model`相同;若也未提供`--lora_model`参数,则其默认值与--base_model相同
`--only_cpu`: 仅使用CPU进行推理
`--gpus {gpu_ids}`: 指定使用的GPU设备编号,默认为0。如使用多张GPU,以逗号分隔,如0,1,2
`--load_in_8bit`: 使用8bit模型进行推理,可节省显存,但可能影响模型效果
## API文档
### 文字接龙(completion)
> 有关completion的中文翻译,李宏毅教授将其翻译为文字接龙 <https://www.youtube.com/watch?v=yiY4nPOzJEg>
最基础的API接口,输入prompt,输出语言大模型的文字接龙(completion)结果。
API DEMO内置有alpaca prompt模板,prompt将被套入alpaca instruction模板中,这里输入的prompt应更像指令而非对话。
#### 快速体验completion接口
请求command:
``` shell
curl http://localhost:19327/v1/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "告诉我中国的首都在哪里"
}'
```
json返回体:
``` json
{
"id": "cmpl-3watqWsbmYgbWXupsSik7s",
"object": "text_completion",
"created": 1686067311,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"text": "中国的首都是北京。"
}
]
}
```
#### completion接口高级参数
请求command:
``` shell
curl http://localhost:19327/v1/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "告诉我中国和美国分别各有哪些优点缺点",
"max_tokens": 90,
"temperature": 0.7,
"num_beams": 4,
"top_k": 40
}'
```
json返回体:
``` json
{
"id": "cmpl-PvVwfMq2MVWHCBKiyYJfKM",
"object": "text_completion",
"created": 1686149471,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"text": "中国的优点是拥有丰富的文化和历史,而美国的优点是拥有先进的科技和经济体系。"
}
]
}
```
#### completion接口高级参数说明
> 有关Decoding策略,更加详细的细节可以参考 <https://towardsdatascience.com/the-three-decoding-methods-for-nlp-23ca59cb1e9d> 该文章详细讲述了三种Llama会用到的Decoding策略:Greedy Decoding、Random Sampling 和 Beam Search,Decoding策略是top_k、top_p、temperature、num_beam等高级参数的基础。
`prompt`: 生成文字接龙(completion)的提示。
`max_tokens`: 新生成的句子的token长度。
`temperature`: 在0和2之间选择的采样温度。较高的值如0.8会使输出更加随机,而较低的值如0.2则会使其输出更具有确定性。temperature越高,使用随机采样最为decoding的概率越大。
`num_beams`: 当搜索策略为束搜索(beam search)时,该参数为在束搜索(beam search)中所使用的束个数,当num_beams=1时,实际上就是贪心搜索(greedy decoding)。
`top_k`: 在随机采样(random sampling)时,前top_k高概率的token将作为候选token被随机采样。
`top_p`: 在随机采样(random sampling)时,累积概率超过top_p的token将作为候选token被随机采样,越低随机性越大,举个例子,当top_p设定为0.6时,概率前5的token概率分别为{0.23, 0.20, 0.18, 0.11, 0.10}时,前三个token的累积概率为0.61,那么第4个token将被过滤掉,只有前三的token将作为候选token被随机采样。
`repetition_penalty`: 重复惩罚,具体细节可以参考这篇文章:<https://arxiv.org/pdf/1909.05858.pdf> 。
`do_sample`: 启用随机采样策略。默认为true。
### 聊天(chat completion)
聊天接口支持多轮对话
#### 快速体验聊天接口
请求command:
``` shell
curl http://localhost:19327/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user","message": "给我讲一些有关杭州的故事吧"}
],
"repetition_penalty": 1.0
}'
```
json返回体:
``` json
{
"id": "chatcmpl-5L99pYoW2ov5ra44Ghwupt",
"object": "chat.completion",
"created": 1686143170,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"message": {
"role": "user",
"content": "给我讲一些有关杭州的故事吧"
}
},
{
"index": 1,
"message": {
"role": "assistant",
"content": "好的,请问您对杭州有什么特别的偏好吗?"
}
}
]
}
```
#### 多轮对话
请求command:
``` shell
curl http://localhost:19327/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user","message": "给我讲一些有关杭州的故事吧"},
{"role": "assistant","message": "好的,请问您对杭州有什么特别的偏好吗?"},
{"role": "user","message": "我比较喜欢和西湖,可以给我讲一下西湖吗"}
],
"repetition_penalty": 1.0
}'
```
json返回体:
``` json
{
"id": "chatcmpl-hmvrQNPGYTcLtmYruPJbv6",
"object": "chat.completion",
"created": 1686143439,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"message": {
"role": "user",
"content": "给我讲一些有关杭州的故事吧"
}
},
{
"index": 1,
"message": {
"role": "assistant",
"content": "好的,请问您对杭州有什么特别的偏好吗?"
}
},
{
"index": 2,
"message": {
"role": "user",
"content": "我比较喜欢和西湖,可以给我讲一下西湖吗"
}
},
{
"index": 3,
"message": {
"role": "assistant",
"content": "是的,西湖是杭州最著名的景点之一,它被誉为“人间天堂”。 <\\s>"
}
}
]
}
```
#### 聊天接口高级参数说明
`prompt`: 生成文字接龙(completion)的提示。
`max_tokens`: 新生成的句子的token长度。
`temperature`: 在0和2之间选择的采样温度。较高的值如0.8会使输出更加随机,而较低的值如0.2则会使其输出更具有确定性。temperature越高,使用随机采样最为decoding的概率越大。
`num_beams`: 当搜索策略为束搜索(beam search)时,该参数为在束搜索(beam search)中所使用的束个数,当num_beams=1时,实际上就是贪心搜索(greedy decoding)。
`top_k`: 在随机采样(random sampling)时,前top_k高概率的token将作为候选token被随机采样。
`top_p`: 在随机采样(random sampling)时,累积概率超过top_p的token将作为候选token被随机采
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能-项目实践-大语言模型-中文LLaMA&Alpaca大语言模型+本地CPUGPU训练部署 (Chinese LLaMA & Alpaca LLMs) 本项目开源了中文LLaMA模型和指令精调的Alpaca大模型,以进一步促进大模型在中文NLP社区的开放研究。这些模型在原版LLaMA的基础上扩充了中文词表并使用了中文数据进行二次预训练,进一步提升了中文基础语义理解能力。同时,中文Alpaca模型进一步使用了中文指令数据进行精调,显著提升了模型对指令的理解和执行能力。
资源推荐
资源详情
资源评论
收起资源包目录
人工智能-项目实践-大语言模型-中文LLaMA&Alpaca大语言模型 (Chinese LLaMA & Alpaca LLMs).zip (89个子文件)
Chinese-LLaMA-Alpaca-main
.gitattributes 31B
data
alpaca_data_zh_51k.json 17.81MB
pt_sample_data.txt 14.55MB
README.md 305B
examples
q8_13b-p7b-p13b
REASONING.md 9KB
ENTERTAINMENT.md 16KB
GENERATION.md 39KB
LITERATURE.md 12KB
OQA.md 28KB
QA.md 18KB
CODE.md 22KB
TRANSLATION.md 18KB
ETHICS.md 17KB
DIALOGUE.md 95KB
README.md 4KB
q4_7b-13b
REASONING.md 6KB
ENTERTAINMENT.md 12KB
GENERATION.md 18KB
LITERATURE.md 8KB
OQA.md 17KB
QA.md 11KB
CODE.md 12KB
TRANSLATION.md 12KB
ETHICS.md 5KB
DIALOGUE.md 24KB
README.md 3KB
f16-p7b-p13b-33b
REASONING.md 9KB
ENTERTAINMENT.md 17KB
GENERATION.md 38KB
LITERATURE.md 13KB
OQA.md 28KB
QA.md 18KB
CODE.md 20KB
TRANSLATION.md 18KB
ETHICS.md 19KB
DIALOGUE.md 102KB
README.md 4KB
q8_7b-13b-p7b
REASONING.md 7KB
ENTERTAINMENT.md 15KB
GENERATION.md 38KB
LITERATURE.md 12KB
OQA.md 27KB
QA.md 16KB
CODE.md 23KB
TRANSLATION.md 18KB
ETHICS.md 17KB
DIALOGUE.md 87KB
README.md 4KB
README.md 1KB
CITATION.cff 829B
requirements.txt 109B
SHA256.md 9KB
pics
banner.png 202KB
screencast.gif 3.91MB
models.png 376KB
notebooks
convert_and_quantize_chinese_llama_and_alpaca.ipynb 244KB
pretrain_chinese_llama_lora.ipynb 99KB
ceval_example_for_chinese_alpaca.ipynb 476KB
finetune_chinese_alpaca_lora.ipynb 61KB
gradio_web_demo.ipynb 4KB
legacy
convert_and_quantize_chinese_llama.ipynb 193KB
convert_and_quantize_chinese_alpaca_plus.ipynb 140KB
README.md 2KB
scripts
merge_llama_with_chinese_lora_low_mem.py 15KB
inference
patches.py 8KB
inference_hf.py 7KB
gradio_demo.py 11KB
langchain
doc.txt 6KB
langchain_qa.py 4KB
langchain_sum.py 3KB
crawl_prompt.py 3KB
merge_tokenizer
chinese_sp.model 508KB
merge_tokenizers.py 3KB
merge_llama_with_chinese_lora.py 14KB
ceval
evaluator.py 2KB
eval.py 5KB
llama_evaluator.py 8KB
subject_mapping.json 5KB
training
run_pt.sh 2KB
run_clm_sft_with_peft.py 18KB
build_dataset.py 4KB
run_clm_pt_with_peft.py 28KB
ds_zero2_no_offload.json 686B
run_sft.sh 2KB
README.md 3KB
openai_server_demo
openai_api_server.py 8KB
patches.py 8KB
README.md 9KB
openai_api_protocol.py 2KB
共 89 条
- 1
资源评论
博士僧小星
- 粉丝: 1934
- 资源: 5894
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java将grib2数据转为json格式
- ffmpeg安装软件.rar
- Go语言练习资源 - go-main
- 第十五届蓝桥杯省一代码
- 海信智能电视刷机数据 LED42K330X3D(0000) 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级程序
- shujudaochuceshi
- learn-ruby.zip
- test111111111111111111
- 海信智能电视刷机数据 LED42K326X3D(0011) 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级程序
- 这里有一份针对美国数学建模竞赛(MCM)的案例分析,涵盖了问题描述、建模过程、求解方法、结果分析以及总结反思
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功