当前位置: 首页 > news >正文

网站备份了怎么恢复网络建设与运维赛项

网站备份了怎么恢复,网络建设与运维赛项,北京建站设计,东莞网站关键字目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构#xff0c;具有 62 亿参数。结合模型量化技术#xff0c;用户可以在消费级的显卡上进行本地部署#xff08;INT…目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构具有 62 亿参数。结合模型量化技术用户可以在消费级的显卡上进行本地部署INT4 量化级别下最低只需 6GB 显存。 LangChain提供了丰富的生态可以非常方便的封装自己的工具并接入到LangcChain的生态中从而实现语言模型的交互将多个组件链接在一起并集成额外的资源例如 API 和数据库。 服务部署 我是在一台离线服务器上GPU内存16G其中python3.10以上torch1.10以上。首先github下载ChatGLM-6Bhttps://github.com/THUDM/ChatGLM-6B方便调用接口里面有一个 requirements.txt文件直接安装里面环境即可然后在Huggingface下载模型chatglm-6bhttps://huggingface.co/THUDM/chatglm3-6b最后将下载好的模型离线打包到离线服务器上。如下所示其中kownledge文件夹里面包含了我要输入的知识文档自己的一些文档、pdf、csv文件等。 当环境搭建好之后进入ChatGLm-6B文件夹下打开api.py文件将tokenizer和model的模型路径修改成从Huggingface下载下来的chatglm-6b模型路径这里我用的是相对路径。 然后在服务器上运行api.py文件服务在端口8000运行。 写一个测试代码api_access.py看看服务是否能被正常使用。值得注意的是如果你是在本地运行这里的url写localhost:8000或者127.0.0.1:8000如果是服务器运行则写服务器的ip地址。 import requestsdef chat(prompt, history):resp requests.post(#url http://127.0.0.1:8000,url http://172.27.171.194:8000,json {prompt: prompt, history: history },headers {Content-Type: application/json;charsetutf-8})return resp.json()[response], resp.json()[history]history [] while True:response, history chat(input(Question:), history)print(Answer:,response) 运行结果如下所示说明该api服务能够正常使用。 实现本地知识库 首先在Huggingface下载向量化模型我选择了text2vec-base-chinesehttps://huggingface.co/shibing624/text2vec-base-chinese/tree/main 然后编写一个embedding.py文件主要存放各种方法完整代码如下所示。值得注意的是由于我的服务器有多张显卡因此我将cuda设置为1你如果只有一张显卡就直接是cuda:0。 from langchain_community.document_loaders import Docx2txtLoader, PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from transformers import BertModel, BertTokenizer import torch import os# -*- coding: utf-8 -*-class EmbeddingFunction:def __init__(self, embedding_function):self.embedding_function embedding_functiondef embed_query(self, query):return self.embedding_function(query)def embed_documents(self, documents):return [self.embedding_function(doc) for doc in documents]class EmbeddingRetriever:def __init__(self):# 加载embeddingself.embedding_model_dict {text2vec3: shibing624/text2vec-base-chinese,bert-base-chinese: /home/ai/bert-base-chinese,}def load_documents(self,directorykownledge):documents []for item in os.listdir(directory):if item.endswith(docx) or item.endswith(pdf):split_docs self.add_document(directory, item)documents.extend(split_docs)return documentsdef add_document(self, directorykownledge, doc_name):file_path os.path.join(directory, doc_name)if doc_name.endswith(docx):loader Docx2txtLoader(file_pathfile_path)elif doc_name.endswith(pdf):loader PyPDFLoader(file_pathfile_path)data loader.load()text_spliter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap100)split_docs text_spliter.split_documents(data)return split_docsdef load_embedding_mode(self,model_nametext2vec3):model_path self.embedding_model_dict[model_name]tokenizer BertTokenizer.from_pretrained(model_path)model BertModel.from_pretrained(model_path).to(cuda:1)def embedding_function(text):inputs tokenizer(text, return_tensorspt, paddingTrue, truncationTrue, max_length512).to(cuda:1)with torch.no_grad():outputs model(**inputs)embedding outputs.last_hidden_state.mean(dim1).squeeze().cpu().numpy().tolist()return embeddingreturn embedding_functiondef store_chroma(self,docs, db):db.add_documents(docs)db.persist()return db 简单解释如下在load_documents和add_document方法中由于我的知识文档是docx和pdf格式的因此我就只写了两个类型你如果有其他类型比如csv或者txt可以修改调用方式如 from langchain_community.document_loaders import TextLoader,CSVLoader 测试 编写一个问答代码my_qa.py完整代码如下所示记得修改url地址。 from langchain_community.vectorstores import Chroma import requests from embedding import EmbeddingRetriever,EmbeddingFunction# -*- coding: utf-8 -*-def chat(prompt, historyNone):plyload {prompt: prompt, history: [] if not history else history}headers {Content-Type: application/json}resp requests.post(url http://172.27.171.194:8000,json plyload,headers headers).json()return resp[response]retriever EmbeddingRetriever() embedding_function EmbeddingFunction(retriever.load_embedding_mode()) db Chroma(embedding_functionembedding_function, persist_directoryVectorStore)# 添加知识文档 if True:documents retriever.add_document(doc_name课程表.docx)#documents retriever.load_documents()db retriever.store_chroma(documents,db)while True:query input(question)similar_docs db.similarity_search(query,k3)prompt 基于以下给出的资料回答问题\nfor doc in similar_docs:prompt f{doc.page_content}\nprompt f问题: {query}response chat(prompt,[])print(Bot:, response) 简单解释如下 在服务器上运行python my_qa.py结果如下 可以看到准确度还是相当不错的。如果自己输入的知识库数量越多回答越准确。 最后看看我的服务器上的文档位置。 可能出现的问题 1、解决transformers和sentence-transformers版本冲突问题 使用pip install -U sentence-transformers下载sentence-transformers时会下载最新版2.7.0并且把最新版的transformers4.39.3一起附带下载下来但是在ChatGLM中要求的transformers版本是4.27.1因此如果使用最新版的transformers在运行api.py接口时会报错提示没有xxxx属性。解决方式有两种第一种就是手动降低版本但可能会报出其他错误第二种就是修改chatglm-6b的配置文件如下所示 就是将从Huggingface下载的模型chatglm-6b下的tokenization_chatglm.py文件进行修改将第222行的代码注释放在第196行也就是super().__init__上面。
http://www.w-s-a.com/news/728516/

相关文章:

  • 深州市住房保障和城乡建设局网站做网站公司叫什么
  • 织梦网站转跳手机站注册公司代理记账费用
  • wordpress建站Pdf亚马逊aws在线观看
  • 做网站的外包公司有哪些WordPress调用json数据
  • 做网站网站怎么赚钱网站的建设及维护报告
  • 可以做效果图的网站东莞网站优化什么方法
  • 网站和软件的区别怎么做招生网站
  • 雄安免费网站建设电话如何做网站推广 求指点
  • 十大免费cad网站入口软件北京做网站建设价格
  • 建设一个公司网站要具备什么网页制作的专业
  • 东莞seo建站排名全包网站
  • 网站建设的基本步骤有哪些软件商店下载官方
  • 网站建设开发报告论文hao123上网从这里开始官方
  • 阿里云建网站费用徐州房产网
  • 网站统计分析平台做企业礼品的网站
  • 做可视化图表的网站wordpress批量导入tag
  • txt怎么做网站网站的链接结构包括
  • 适合平面设计师的网站网络营销专员的就业前景
  • 好订单网服装加工接单谷歌seo网站推广怎么做
  • seo泛站群外贸网站建设团队
  • 网站免费维护建立网站国家城乡建设部投诉网站
  • 企业网站必须备案吗wordpress导入数据库依然无法链接
  • 浅谈高校网站群的建设网站不支持m.域名
  • 和平网站建设公司做实验教学视频的网站
  • 音乐网站源码带手机版WordPress菜单调用不出
  • 昆明网站设计都需要设计什么网络推广岗位职责和任职要求
  • 国外公司网站模板网站建设公司选择意见书
  • 如何创建一个网站卖东西郑州 网站建设公司
  • 石景山郑州阳网站建设南京网站搜索引擎优化
  • 一个网站需要哪些备案书店网站建设策划书总结