提示词工程实践(二)——本地开源模型部署 #117
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#117
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
在这里,我们通过在本地部署CodeLlama-7B-HF模型进行提示词工程实践测试。
Code Llama模型
Code Llama 是 Meta AI 推出的一款开源的大语言模型,专门用于代码生成和理解任务。它是在 Llama 2 的基础上进行微调的,旨在为编程相关任务提供支持,能够生成、补全代码,回答编程问题,甚至进行代码调试。Code Llama 支持多种编程语言,包括 Python、C++、JavaScript 等,并可以处理跨语言的代码片段。
Code Llama 有多个版本,根据不同的使用场景提供不同大小的模型。此处我们使用的是适合通用代码生成和理解任务的Code Llama模型。此外,还有专门针对python进行过微调的Code Llama - Python 和专注于遵循自然语言指令进行代码生成的任务,能够更好地根据人类的指令生成符合要求的代码的Code Llama - Instruct模型等。
CodeLlama-7B-HF:7B指的是有70亿个参数,HF指的是经过 Hugging Face 平台格式化的模型版本,因此可以方便地与 Hugging Face 的 Transformers 库进行集成和使用。
使用FastChat部署codellama-7b-hf模型
首先创建四个终端,三个用来部署,一个用来交互。
2.1 启动Controller:
python -m fastchat.serve.controller --host 0.0.0.0
详细过程:
Controller是整个服务系统的核心组件,它启动后会等待Model Workers和API Server的连接。
2.2 启动Model Worker:
python -m fastchat.serve.model_worker --model-path /dataset/CodeLlama-7b-hf/ --host 0.0.0.0 --num-gpus 4 --max-gpu-memory 15GiB
--model-path /dataset/CodeLlama-7b-hf/
:指定要加载的模型路径。这个路径下包含的是已经下载并配置好的CodeLlama-7B-HF
模型文件。--host 0.0.0.0
:同样表示Model Worker服务将绑定到本机所有网络接口,便于外部访问。--num-gpus 4
:表示该工作者将使用 4 张 GPU。通常一个大模型需要使用多张 GPU 来进行分布式推理以提升性能。--max-gpu-memory 15GiB
:限制每张 GPU 的最大显存使用量为 15GB。因为不同的 GPU 可能有不同的显存大小,这个参数可以确保不会占用超出 GPU 能力的显存。确保这个值不超过 GPU 的可用显存大小,否则可能导致内存不足的问题。详细过程:
Model Worker 启动后会尝试加载模型,并连接到 Controller。多个 Worker 可以连接到同一个 Controller,进行负载均衡和并行计算。
每次 API 请求进入后,Controller 会根据不同 Worker 的负载情况,将任务分发给空闲的 Worker 进行处理。
2.3 启动OpenAI API Server:
python -m fastchat.serve.openai_api_server --host 0.0.0.0
--host 0.0.0.0
:绑定到所有网络接口,允许外部访问该 API Server。详细过程:
当外部应用(如使用 OpenAI 官方的 API 客户端)发送请求到 API Server 时,API Server 会将请求转发给 Controller。
Controller 再将请求分配给空闲的 Model Worker,进行实际的模型推理。
推理结果返回到 Controller,Controller 再传回给 API Server,最终 API Server 将结果返回给客户端。
模型调用
curl -X POST http://localhost:8000/v1/completions </font>
-H "Content-Type: application/json"</font>
-d '{
"model": "CodeLlama-7b-hf",
"prompt": "You are a powerful text-to-SQL model. Your job is to answer questions about a database. You are given a question and context regarding one or more tables. You must output the SQL query that answers the question. ### Input: Which Class has a Frequency MHz larger than 91.5, and a City of license of hyannis, nebraska? ### Context: CREATE TABLE table_name_12 (class VARCHAR, frequency_mhz VARCHAR, city_of_license VARCHAR) ### Response:",
"max_tokens": 41,
"temperature": 0.5
}'
预期的 SQL 查询:
根据问题和表结构,预期生成的 SQL 查询结果应类似于:
SELECT class FROM table_name_12 WHERE frequency_mhz > 91.5 AND city_of_license = 'hyannis, nebraska';
实际输出:
然而实际生成结果与其不符,可以看出用原始模型得出的结果并不算好,需要根据需要进行微调。