当前位置:   article > 正文

个人搭建qwen2大模型过程笔记_qwen2 显存需求

qwen2 显存需求

依赖项:

        AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL

配置:4090,24G显存,windterm远程,vscode等基于软件就不说了

qwen2需求情况一览表:

显存占用大小(可以通过改浮点位调整占用显存大小):

内存占用量:

第一步:申请资源,创建python环境(autodl自带conda环境)

conda create -n myllm python==3.8.18

第二步:依赖包

哼...,pip install vllm不行,使用下面结束!

  1. pip install vllm==0.4.0.post1
  2. pip install modelscope==1.11.0
  3. pip install openai==1.17.1
  4. pip install tqdm==4.64.1
  5. pip install transformers==4.39.3
  6. MAX_JOBS=8 pip install flash-attn --no-build-isolation

第三步:下载qwen2-7B大模型(确保下载完)

  1. # model_download.py
  2. import os
  3. import torch
  4. from modelscope import snapshot_download, AutoModel, AutoTokenizer
  5. model_dir = snapshot_download('qwen/Qwen2-7B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

 第四步:初级调用

  1. # vllm_model.py
  2. from vllm import LLM, SamplingParams
  3. from transformers import AutoTokenizer
  4. import os
  5. import json
  6. # 自动下载模型时,指定使用modelscope。不设置的话,会从 huggingface 下载
  7. os.environ['VLLM_USE_MODELSCOPE']='True'
  8. def get_completion(prompts, model, tokenizer=None, max_tokens=512, temperature=0.8, top_p=0.95, max_model_len=2048):
  9. stop_token_ids = [151329, 151336, 151338]
  10. # 创建采样参数。temperature 控制生成文本的多样性,top_p 控制核心采样的概率
  11. sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)
  12. # 初始化 vLLM 推理引擎
  13. llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)
  14. outputs = llm.generate(prompts, sampling_params)
  15. return outputs
  16. if __name__ == "__main__":
  17. # 初始化 vLLM 推理引擎
  18. model='/root/autodl-tmp/qwen/Qwen2-7B-Instruct' # 指定模型路径
  19. # model="qwen/Qwen2-7B-Instruct" # 指定模型名称,自动下载模型
  20. tokenizer = None
  21. # 加载分词器后传入vLLM 模型,但不是必要的。
  22. # tokenizer = AutoTokenizer.from_pretrained(model, use_fast=False)
  23. text = ["你好,帮我介绍一下什么时大语言模型。",
  24. "可以给我将一个有趣的童话故事吗?"]
  25. # messages = [
  26. # {"role": "system", "content": "你是一个有用的助手。"},
  27. # {"role": "user", "content": prompt}
  28. # ]
  29. # 作为聊天模板的消息,不是必要的。
  30. # text = tokenizer.apply_chat_template(
  31. # messages,
  32. # tokenize=False,
  33. # add_generation_prompt=True
  34. # )
  35. outputs = get_completion(text, model, tokenizer=tokenizer, max_tokens=512, temperature=1, top_p=1, max_model_len=2048)
  36. # 输出是一个包含 prompt、生成文本和其他信息的 RequestOutput 对象列表。
  37. # 打印输出。
  38. for output in outputs:
  39. prompt = output.prompt
  40. generated_text = output.outputs[0].text
  41. print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

 结果:

 第三步:部署为openai接口,API访问

python -m vllm.entrypoints.openai.api_server --model /root/autodl-tmp/qwen/Qwen2-7B-Instruct  --served-model-name Qwen2-7B-Instruct --max-model-len=2048 --port 8000

其他指令

  1. --host 0.0.0.0 #IP
  2. --port 8000 #端口
  3. --gpu-memory-utilization 0.7 #占用GPU内存部分
  4. --max-model-len 29856 #上下文长度
  5. --model Qwen1.5-72B-Chat #模型文件位置
  6. --tensor-parallel-size 4 #指定4张卡

如果想指定某几张卡,可以使用命令:

CUDA_VISIBLE_DEVICES=0,1 python -m vllm.entrypoints.openai.api_server --model /root/autodl-tmp/qwen/Qwen2-7B-Instruct --served-model-name Qwen2-7B-Instruct --max-model-len=2048 --port 8000

OOM(内存溢出)问题。我们推荐您尝试三个参数进行修复。第一个参数是 --max-model-len 。我们提供的默认最大位置嵌入(max_position_embedding)为32768,因此服务时的最大长度也是这个值,这会导致更高的内存需求。将此值适当减小通常有助于解决OOM问题。另一个您可以关注的参数是 --gpu-memory-utilization 。默认情况下,该值为 0.9 ,您可以将其调高以应对OOM问题。最后就是--dtype float16,选择较小的浮点数可以降低内存消耗。

部署完成后查询当前端口的模型信息:

curl http://localhost:8000/v1/models

指定端口:--port 8000

指定浮点位数:(可以设置auto,或者去掉使用默认值)

--dtype float16

 --dtype float32(直接超过显存了,说明位数不同,占的显存差别还是很大的)

测试api接口代码:

  1. # vllm_openai_completions.py
  2. from openai import OpenAI
  3. client = OpenAI(
  4. base_url="http://localhost:8000/v1",
  5. api_key="sk-xxx", # 随便填写,只是为了通过接口参数校验
  6. )
  7. completion = client.chat.completions.create(
  8. model="Qwen2-7B-Instruct",
  9. messages=[
  10. {"role": "user", "content": "你是谁"}
  11. ]
  12. )
  13. print(completion.choices[0].message)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/908424
推荐阅读
相关标签
  

闽ICP备14008679号