chatglm3部署
下载模型 ,先创建目录 chatglm3
先部署,用egal-get 下载模型文件, 小文件用浏览器下载,大文件用egal-get下载,这个时候要验证下载的SHA256
在window里面,调用 certutil -hashfile 文件名 SHA256 进行查看,查看完了,都没有问题
环境部署
接下来是部署,部署很简单,上去运行gunicorn,或者直接运行官方的py也行,因为我只想研究function call,所以不想在部署上花时间,所以就是普通的部署就行了。
如果要达到普通的部署,需要pycharm进入服务器,部署pycharm
查看pycharm 远程服务: https://blog.csdn.net/qq_44614026/article/details/118109014
很简单,就是使用pycharm的tool,配置服务器用户名密码,然后最重要的配置mapping,把服务器某个目录映射到本机某个目录下面,然后过一会在project那边上传代码,或者下载代码即可。
修改路径
怎么进行普通的部署?,当前这个部署失败是因为path不对
MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
PT_PATH = os.environ.get('PT_PATH', None)
TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)
这段代码通过os.environ.get获取了三个变量,这里做了什么
其实就是os.envrion.get(xxx, default), 如果没有这类环境变量就直接返回默认值
于是设置了模型所在的目录,作为MODEL_PATH
把TOKENIZER_PATH也设置为模型所在的目录
在composite_demo运行streamlit run main.py即可
依赖问题
但是有可能stream版本不对,需要运行 pip install streamlit==版本号,下载一个最新的streamlit的版本。
先普通的部署,对tool_using进行测试,测试问题得等等看,完成了部署了。
量化部署
model = AutoModel.from_pretrained("THUDM/chatglm3-6b",trust_remote_code=True).quantize(4).cuda()
大概6b的参数占的内存*2 + 1, 大概就是13GB
如果没有量化的话,那就是17GB
多卡且指定卡部署
from utils import load_model_on_gpus
model = load_model_on_gpus("THUDM/chatglm3-6b", num_gpus=2)
你也可以传入 device_map 参数来自己指定,在chatglm3的openai_api_demo的utils.py文件里,有一个函数auto_configure_device_map,里面的device_map是一个字典
device_map = {
'transformer.embedding.word_embeddings': 0,
'transformer.encoder.final_layernorm': 0,
'transformer.output_layer': 0,
'transformer.rotary_pos_emb': 0,
'lm_head': 0
}
used = 2
gpu_target = 0
for i in range(num_trans_layers):
if used >= per_gpu_layers:
gpu_target += 1
used = 0
assert gpu_target < num_gpus
device_map[f'transformer.encoder.layers.{i}'] = gpu_target
used += 1
在这里可以选择层数与gpu卡号进行绑定,其中的transformer.encoder.layers.0,1,2,3… 可以设置到gpu不同的卡号上面。