泰州网站制作方案,淘宝客的wordpress模板,可以用什么做网站登录页面,创业网站建设规划书在了解FastChat如何完成大模型部署前#xff0c;先了解下Huggingface提供的Transformer库。Hugggingface提供的Transformer库 Hugging Face 的 Transformers 库是一个用于自然语言处理#xff08;NLP#xff09;任务的 Python 库#xff0c;旨在简化和加速使用预训练语言模… 在了解FastChat如何完成大模型部署前先了解下Huggingface提供的Transformer库。Hugggingface提供的Transformer库 Hugging Face 的 Transformers 库是一个用于自然语言处理NLP任务的 Python 库旨在简化和加速使用预训练语言模型如BERT、GPT-2等的开发和应用。这个库的主要作用包括预训练模型的加载和使用 Transformers 库提供了易于使用的接口允许用户加载各种预训练语言模型如BERT、GPT-2、T5等。这些模型在大规模文本数据上进行了预训练并可以用于各种自然语言处理任务如文本分类、命名实体识别、文本生成等。文本编码和解码 Transformers 库提供了文本编码和解码功能可以将文本数据转换为模型可以理解的输入并将生成的输出转换回文本。这对于处理不同任务的输入和输出数据非常有用。支持多种任务 该库支持多种自然语言处理任务并提供了预训练模型的封装以便用户可以轻松地在这些任务上进行微调和应用。这些任务包括文本分类、情感分析、命名实体识别、机器翻译等。模型微调 Transformers 库允许用户对预训练模型进行微调以适应特定的任务或领域。这使得用户可以在有限的数据集上实现高性能的自然语言处理应用。模型交流和共享 Hugging Face 的 Transformers Hub 提供了一个平台允许用户分享、发布和发现预训练模型和相关资源。这有助于加速 NLP 社区的发展和合作。支持多种深度学习框架 Transformers 库支持多种深度学习框架包括PyTorch、TensorFlow和JAX以满足不同用户的需求。 以通过HuggingFace提供的Tranformer加载和使用预训练大模型为例下面的代码加载了Bert模型首先是加载了Bert模型的BertTokennizer用户后面对输入输出新的encode和decode接着是通过model_name来加载大模型。
# 安装 Transformers 库如果尚未安装
# pip install transformersfrom transformers import BertTokenizer, BertForSequenceClassification
import torch# 1. 加载预训练的BERT模型和标记器
model_name bert-base-uncased # 预训练模型的名称
tokenizer BertTokenizer.from_pretrained(model_name)
model BertForSequenceClassification.from_pretrained(model_name)# 2. 准备输入文本
text Hugging Face Transformers库使自然语言处理变得非常容易。# 3. 使用标记器对文本进行编码
inputs tokenizer(text, return_tensorspt)# 4. 使用模型进行文本分类
outputs model(**inputs)
logits outputs.logits# 5. 打印分类结果
print(logits)再看国内开源大模型的部署加载命令以ChatGLM大模型为例。通过下面的代码可以看到实际也是通过Huggingface提供的transformer库完成的模型下载和使用。即先将大模型相关信息上传到huggingface后续任何人要下载启动大模型就可以通过下面的两行代码完成大模型的下载和部署。
AutoTokenizer.from_pretrained 是 Hugging Face Transformers 库中的一个方法用于从预训练模型的名称或路径加载适当的标记器Tokenizer。 AutoModel.from_pretrained 是 Hugging Face Transformers 库中的一个方法用于从预训练模型的名称或路径加载适当的模型。
from transformers import AutoTokenizer, AutoModel
tokenizer AutoTokenizer.from_pretrained(THUDM/chatglm-6b, trust_remote_codeTrue)
model AutoModel.from_pretrained(THUDM/chatglm-6b, trust_remote_codeTrue).half().cuda()
model model.eval()
response, history model.chat(tokenizer, 你好, history[])
print(response) 查看HuggingFace上面的ChatGLM大模型上传的信息可以看到大模型的参数文件都可以在Huggingface上查询到具体如下图所示 理解了前面的信息后再来看FastChat如何完成各种开源大模型的部署本质上就是对原来的开源模型部署命令进行了二次封装。FastChat是通过执行“python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.3”命令部署模型的所以先来看一下model_worker这个文件的大致内容。
查看model_worker.py中的内容部分内容如下图所示可以看到在接口/v1/chat/completions里面又继续进行的请求调用。 按照调用的方法一层一层往下看会发现model_work.py中的代码调用了controller文件中的代码。controller.py文件中的部分代码内容如下图所示 在查看controller.py中的代码时会发现该文件中方法调用了model_adapter.py文件中的方法,而model_adapter又调用了model_chatglm.py文件中方法。以初始化model为例子层层往下看后会发现最终load_model方法中的内容和直接编写脚本load model的方式一样具体内容如下图红框所示红框中的内容和大模型官网本身提供的部署命令相同。 除了初始化加载启动大模型FastChat还封装了api如果从model_work中查看一层层往下看最终会看到如下的代码下面的代码通过调用model.chat()方法与大模型交互。FastChat提供了兼容OpenAPI的接口本质上也是进行了二次封装而已。 查看FastChat官网给出的架构图可以知道当有用户的请求发送过来时首先到Gradio Server也就是前端UI服务再通过Controller与Worker交互。 从源代码层面来看主要的代码集中在controller.py,model_worker.py,model_adapter.py,model_xxx.py几个文件中。 通过上面的分析可以看到FastChat在支持大模型部署和提供兼容OpenAPI的接口方面主要是对原有的开源大模型进行了二次封装让用户在通过FastChat进行大模型部署和使用时更加方便。