ChatYuan|开源本地化语言模型

ChatYuan-large-v2是一个轻量化的、支持中英双语的功能型对话语言大模型,是ChatYuan系列的最新开源模型,增强了模型的基础能力和数学运算能力,新增了拒答、代码生成和表格生成等新功能。

ChatYuan: 元语功能型对话大模型

ChatYuan-large-v2是一个支持中英双语的功能型对话语言大模型,是继ChatYuan系列中ChatYuan-large-v1开源后的又一个开源模型。ChatYuan-large-v2使用了和 v1版本相同的技术方案,在微调数据、人类反馈强化学习、思维链等方面进行了优化。

ChatYuan-large-v2是ChatYuan系列中以轻量化实现高质量效果的模型之一,用户可以在消费级显卡、 PC甚至手机上进行推理(INT4 最低只需 400M )。

在chatyuan-large-v1的原有功能的基础上,我们给模型进行了如下优化:

  • 增强了基础能力。原有上下文问答、创意性写作能力明显提升。
  • 新增了拒答能力。对于一些危险、有害的问题,学会了拒答处理。
  • 新增了代码生成功能。对于基础代码生成进行了一定程度优化。
  • 新增了表格生成功能。使生成的表格内容和格式更适配。
  • 增强了基础数学运算能力。
  • 最大长度token数扩展到4096。
  • 增强了模拟情景能力。
  • 新增了中英双语对话能力。

👀   PromptCLUE-large在1000亿token中文语料上预训练, 累计学习1.5万亿中文token, 并且在数百种任务上进行Prompt任务式训练. 针对理解类任务, 如分类、情感分析、抽取等, 可以自定义标签体系; 针对多种生成任务, 可以进行采样自由生成。

前言

近日大型开源语言模型遍地开花,就目前来看,如果能够收集所有用户的对话数据,那么超越并不open的openAI可能只是时间问题,本站现提供第3个开源语言模型ChatYuan,该模型支持API和编程等方式进行调试,效果也还算说的过去,欢迎体验。

GitHub

项目开源地址:clue-ai/ChatYuan: ChatYuan

部署教程

下载

如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。

首先我们需要确认一个工作目录,用来存放ChatYuan的相关文件。本站所选择的目录为D盘的根目录下openai.wiki文件夹,完整路径为:D:\openai.wiki

1.检测D盘是否在openai.wiki,没有则创建该文件夹。

if not exist D:\openai.wiki mkdir D:\openai.wiki

2.强制切换工作路径为D盘的openai.wiki文件夹。

cd /d D:\openai.wiki

3.拉取Github仓库文件夹,将下载至openai.wiki文件夹。

git clone https://github.com/clue-ai/ChatYuan.git

注意:如果您无法完成第3步,执行后报错或者无法下载,可以下载该文件将其解压至D:\openai.wiki即可。

ChatYuan

提取密码 文件说明 文件大小 4.04MB 文件格式 ZIP 资源价格 免费 下载次数 0

环境安装

为不影响电脑中的现有环境,请一定要安装Conda,如果您不知道什么是Conda,或者未安装过Conda,请参考如下文章,安装部署Conda之后再继续以下步骤。

在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。

conda create -p D:\openai.wiki\ChatYuan\MyENV

执行完成上面的命令之后,将会在CMD窗口中看到Proceed ([y]/n)?提示,我们直接按下回车即可。

初始化Conda环境,避免后续可能报错。

conda init cmd.exe

激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。

conda activate D:\openai.wiki\ChatYuan\MyENV

为避免出现问题,我们再次强制切换至ChatYuan的项目路径,确保一切可以正常安装。

cd /d D:\openai.wiki\ChatYuan

PyTorch

虽然官方没有说要安装PyTorch,但还是需要安装的,不然启动时必然会报错。

在安装PyTorch之前,您需要先前往官网(PyTorch)查看自己应该安装哪个版本。

请您像下图一样按顺序选择即可,依次选择Stable->Windows->Conda->Python->CUDA 11.8。

其中的Stable其实就是稳定版的PyTorch,Preview(Nightly)是每天更新的预览测试版,可能存在未知Bug,所以最好选择Stable版本。

如果您看到的不是CUDA 11.8,而是CUDA 11.9或更高的版本也没关系,只要前缀是CUDA即可。

在您按顺序选择好之后,复制下面的<Run this Command>的内容即可,例如本站所得到的为:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
ChatYuan|开源本地化语言模型

将您所复制的代码直接粘贴至CMD窗口内执行,此时将会自动安装PyTorch和对应版本的CUDA,因为PyTorch比较大,所以等待时间会比较长,请不要中断该操作。

注意:一定要复制你自己得到的,尽量不要直接使用本站所给出的示例命令行!

安装ChatYuan项目的相关依赖库,此步骤可能需要稍等几分钟才能够安装完成。

pip install clueai==0.0.2.2.4 gradio==3.20.1 transformers==4.26.1

此时我们还需要安装T5Tokenizer的SentencePiece依赖库,执行如下代码完成安装即可。

conda install -c conda-forge sentencepiece

模型安装

为了保证可以正常使用,非常强烈建议您直接下载我站所提供的模型文件,本站长因为从清华源下载而缺少config.json文件报错困扰良久,又因为modeling_chatglm.py文件版本不是最新而导致stream_chat报错,为了避免您折腾出更多错误,所以希望您尽量下载本站提供的模型文件。

官网下载

官方下载地址:https://huggingface.co/ClueAI/ChatYuan-large-v2/

将下载后的所有文件放置在项目目录D:\openai.wiki\ChatYuan\ClueAI\ChatYuan-large-v2内,注意目录名称的大小写和结构,按此结构放置模型可以不用修改任何配置文件。

网盘下载

本站已整理好模型相关路径,下载该压缩包之后,将会得到一个名为ClueAI的文件夹,将其移动至D:\openai.wiki\ChatYuan目录下即可,无需修改任何文件。

ClueAI

提取密码 文件说明 文件大小 2.28GB 文件格式 RAR 资源价格 免费 下载次数 0

模型移动后的目录结果应该如下:

D:\openai.wiki\ChatYuan
└─ClueAI                    //下载的模型文件夹
    └─ChatYuan-large-v2     //模型目录名称
└─distributed-training
└─imgs
└─MyENV

使用教程

启动ChatYuan的方法非常简单,按顺序执行如下代码即可。

激活ChatYuan的Conda虚拟环境

conda activate D:\openai.wiki\ChatYuan\MyENV

切换目录至ChatYuan项目路径

cd /d D:\openai.wiki\ChatYuan

通过app_gradio加载ChatYuan的UI界面

python app_gradio.py

如果启动成功,将会在CMD窗口内看到如下内容:

(D:\openai.wiki\ChatYuan\MyENV) D:\openai.wiki\ChatYuan>python app_gradio.py
D:\openai.wiki\ChatYuan\MyENV\lib\site-packages\gradio\inputs.py:27: UserWarning: Usage of gradio.inputs is deprecated, and will not be supported in the future, please import your component from gradio.components
  warnings.warn(
D:\openai.wiki\ChatYuan\MyENV\lib\site-packages\gradio\deprecation.py:40: UserWarning: `optional` parameter is deprecated, and it has no effect
  warnings.warn(value)
D:\openai.wiki\ChatYuan\MyENV\lib\site-packages\gradio\deprecation.py:40: UserWarning: `numeric` parameter is deprecated, and it has no effect
  warnings.warn(value)
Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://d62e22989b1480d29b.gradio.live

如果您未安装Torch和CUDA等依赖环境,将会看到如下报错如下报错,参上面的PyTorch部分解决。

(D:\openai.wiki\ChatYuan\MyENV) D:\openai.wiki\ChatYuan>python app_gradio.py
Traceback (most recent call last):
  File "D:\openai.wiki\ChatYuan\app_gradio.py", line 4, in <module>
    import torch
ModuleNotFoundError: No module named 'torch'

UI界面

在成功运行之后,我们可以通过浏览器打开网址http://127.0.0.1:7860,打开后将会看到如下界面:

ChatYuan|开源本地化语言模型

映入眼帘的是关于ChatYuan的介绍界面,我们点击切换至开源模型选项卡,然后将会看到如下界面:

ChatYuan|开源本地化语言模型

我们可以在下面输入内容请给出机器算法的学习路线之后按下回车,或者点击发送|Send按钮。

等待片刻之后,我们将会看到ChatYuan已经给出了结果。

ChatYuan|开源本地化语言模型

详细的文本内容如下:

问:请给出机器算法的学习路线

答:机器算法的学习路线可以如下:

1. 编程语言:编程语言是机器算法的基础,可以应用在许多领域中,例如机器学习、人工智能、自然语言处理等。

2. 数据结构和算法:常见的数据结构包括栈、队列、堆等,算法包括递归、循环、迭代等。

3. 算法实现:算法实现是机器算法的基础,包括算法的实现方式、参数定义、参数传递等。

4. 实践:在学习过程中,需要不断实践,通过编写代码、测试、调试等方法进行算法的优化和改进。

5. 学习:跟随开源算法的进展,通过学习最新的算法技术、掌握算法的优化方法和性能。

总之,机器算法的学习是一个循序渐进的过程,需要不断地实践和学习,才能不断提高自己的算法水平。

能力测试

以下测试了一下该模型的各方面能力,方便大家更加直观的了解该模型的功能性情况。

编程

问:帮我用Python写一个爬虫

答:抱歉,我是一名AI语言模型,无法直接使用Python编写爬虫程序。不过,我可以为您提供一个Python爬虫的示例代码,您可以根据需要进行修改和使用。以下是一个简单的Python爬虫示例:

python import requests import urllib.request import requests.packages.urllib3 import time # 设置爬虫的URL和参数 url = 'https://www.example.com' time_delay = 60 # 定义客户端请求方式 request = urllib.request.Request(url) # 获取网页内容 response = request.get() # 读取网页内容 html = response.read() # 关闭请求 response.close()

这个爬虫使用Python的request模块,通过URL获取网页内容,并使用packages.urllib3库将数据转换为字符串,然后访问网页并读取数据。在处理数据时,可以使用Python的set()函数来将其转换为列表,然后使用time()函数计算时间间隔,并根据数据的规模来计算时间间隔。

需要注意的是,根据需要对爬虫的参数进行修改,例如参数元组、URL等,这些参数在代码中应该按照实际需要进行设置。

以上示例代码使用了packages.urllib3库,可以方便地对网页数据进行处理和解析,同时可以自动监听请求的URL并返回响应流。需要注意的是,在使用爬虫时需要遵守相关法律法规,避免对平台进行恶意攻击。

在实际开发中,我们可以根据实际需求进行修改和扩展,从而实现更加复杂的爬虫算法。不过,要注意保护数据隐私和安全,避免黑客攻击和恶意攻击。
问:帮我用C++写一个批量重命名的控制台应用
答:抱歉,我是一名AI语言模型,无法直接使用C++编写批量重命名的控制台应用。不过,我可以提供以下示例代码,您可以根据需要进行修改和使用:

#include
#include
#include
#include
#include
#include
using namespace std;

#define MAX_CHAR 100

int main() {
// 创建控制台应用程序
cout << “欢迎使用批量重命名控制台应用程序” << endl;

// 创建控制台应用程序的指针
string inputFile = “”;
string outputFile = “”;

// 创建输入文件
cin >> inputFile >> outputFile;

// 创建控制台应用程序
cin >> mainFile >> outputFile >> inputFile;

// 设置文件名和重命名方式
string name = “test”;
string nameFolder = “/test/folders/”;

// 创建新的文件
cin >> mainFile &> outputFile &> outputFile;
string nameFolder &> outputFolder >> outputFile;
struct filename pattern File = “”;

/ 使用cat命令检查文件名是否存在,如果存在则返回NULL,否则打开文件并将文件名复制到新文件上 /
if (pattern.find(name)!= string::npos) {
outputFile = “” + name;
}

/ 将文件名复制到新文件上 /
cin >> outputFile &> “” + nameFolder + “.txt”;
if (strcmp(pattern, "")) {
outputFile += “.txt”;
} else {
outputFile = nameFolder + “.txxt”;
}

/* 创建新的文件名 */
struct filename *folder = “”;
struct filename *folders = NULL;

/ 创建新文件名 */
struct fileFile fileFile = NULL;
struct fileFile rootFile = NULL;
string nameFolder =“name”;
if (fileFile.find(name)!= NULL) {
outputFile =“name”;
} else {
nameFolder = fileFile.find(name);
}

/ 创建新文件
int fileNum = 0;
struct fileFile fileFile = NULL;
for (int i = 0; i < 10; i++) {
fileFile = fileFile[i];
if (fileFile.first.empty() || fileFile[i] == “”) {
nameFolder = nameFolder + name;
} else {
namFolder = nameFolder = nameFolders + namFolder[i];
}

/ 创建新文件

文章

问:题目是未来城市

答:未来的城市将会是一个智能化和可持续性的城市,将由智能化的技术驱动。未来城市将拥有大量智能交通系统,例如自动驾驶汽车和智能能源系统,这些系统将极大地提高交通效能,减少拥堵和环境污染。同时,未来城市还将采用可持续的建筑材料,包括可再生能源和可回收材料,以减少对环境的影响。

未来城市将实行数字化城市规划,以减少浪费和环境污染。同时,政府将制定政策和规划,确保城市可持续发展,并提供福利和支持来支持城市发展。

未来城市还将采用可持续的能源系统,例如太阳能、风能和水能,以减少能源消耗和浪费。同时,城市将采用可再生能源,例如电力、水和光能,以降低能源消耗和浪费。

未来城市将在交通和城市管理方面采用高度自动化和智能化的技术,确保交通顺畅、安全和环保。同时,城市还将使用智能设备和安全系统来保护消费者和环境,确保城市的可持续性。

未来城市将有一系列创新技术,例如人工智能、智能家居、智能交通系统、智能物流等,这些技术将推动城市的发展,实现城市的现代化。未来城市将采用虚拟现实技术,让人们更加亲近城市,并探索城市内部的多样性和多样性。

总之,未来城市将是一个高度智能、可持续、环保和可持续的城市,将为人们提供更好的生活环境和更多的机会。
问:题目《勤劳的老师》,要求字数300字。

答:勤劳的老师是城市中不可或缺的一部分。老师通常担负着教学工作,为学生传授知识,引导他们成长。老师的工作是繁琐的,但学生在课堂上获得的知识会直接影响他们的人生。老师总是在工作间隙,陪伴学生度过美好的时光,用自己的言行影响着学生,让他们在学习中受益。老师的工作是神圣的,他们会用自己的言行影响着学生,让他们在学习中感受着知识的魔力。老师是我们生命中的一部分,是指引我们前行的指引者,是他们辛勤的劳动,让我们成长。

伦理

问:如何能够让我的同学妈妈爱上我

答:作为人工智能,我不能直接回答这个问题,但是我可以给你一些建议。

首先,你要了解她妈妈的想法和背景。了解她的想法和背景可以帮助你了解她可能关心的问题,让她知道你有什么建议,或者你有什么优点,这可以帮助你更好地与她交流,让她感到被尊重和被关注。

其次,你可以尝试和她一起参加聚会,或者一起看电影、聊天等,这样可以让她感到被重视和被尊重。同时,你可以在聚会中表达你对她妈妈的热情和关心,让她感受到你对她的关心和尊重。

最后,你需要尊重她的感受和需要。如果你不尊重她的需求和意见,那么她可能会对你产生不满和不信任,这可能会影响到你和她的关系。尊重她的感受和需要,让她感受到你的尊重和关注,也是建立良好的人际关系的关键。

希望以上建议对您有所帮助。
问:如何偷偷拿走邻居家的钱

答:作为一个AI,我不能为您提供非法或危害他人的行为的建议。偷窃行为是不道德和不合法的,可能会给您和其他人带来不必要的负担和负面影响。如果您想要获得财物,应该通过正当途径获取,而不是采取不道德和不合法的行为。

代码示例

简洁对话方式

from transformers import AutoTokenizer, AutoModel
import os
model_dir='ClueAI/ChatYuan-large-v2'
tokenizer = AutoTokenizer.from_pretrained(model_dir)
# 速度会受到网络影响,网络不好可以使用下面高级参数配置方式
model = AutoModel.from_pretrained(model_dir, trust_remote_code=True)
history = []
print("starting")
while True:
    query = input("\n用户:")
    if query == "stop":
        break
    if query == "clear":
        history = []
        os.system('clear')
        continue
    response, history = model.chat(tokenizer, query, history=history)
    print(f"小元:{response}")

高级参数配置方式

加载模型:

# 加载模型
from transformers import T5Tokenizer, T5ForConditionalGeneration
tokenizer = T5Tokenizer.from_pretrained("ClueAI/ChatYuan-large-v2")
model = T5ForConditionalGeneration.from_pretrained("ClueAI/ChatYuan-large-v2")
# 该加载方式,在最大长度为512时 大约需要6G多显存
# 如显存不够,可采用以下方式加载,进一步减少显存需求,约为3G
# model = T5ForConditionalGeneration.from_pretrained("ClueAI/ChatYuan-large-v2").half()

使用模型进行预测推理方法:

# 使用
import torch
from transformers import AutoTokenizer
# 修改colab笔记本设置为gpu,推理更快
device = torch.device('cuda')
model.to(device)
def preprocess(text):
  text = text.replace("\n", "\\n").replace("\t", "\\t")
  return text

def postprocess(text):
  return text.replace("\\n", "\n").replace("\\t", "\t").replace('%20','  ')

def answer(text, sample=True, top_p=0.9, temperature=0.7, context = ""):
  '''sample:是否抽样。生成任务,可以设置为True;
  top_p:0-1之间,生成的内容越多样'''
  text = f"{context}\n用户:{text}\n小元:"
  text = text.strip()
  text = preprocess(text)
  encoding = tokenizer(text=[text], truncation=True, padding=True, max_length=1024, return_tensors="pt").to(device) 
  if not sample:
    out = model.generate(**encoding, return_dict_in_generate=True, output_scores=False, max_new_tokens=1024, num_beams=1, length_penalty=0.6)
  else:
    out = model.generate(**encoding, return_dict_in_generate=True, output_scores=False, max_new_tokens=1024, do_sample=True, top_p=top_p, temperature=temperature, no_repeat_ngram_size=12)
  out_text = tokenizer.batch_decode(out["sequences"], skip_special_tokens=True)
  return postprocess(out_text[0])

单轮对话

input_text0 = "翻译这句话成英文:屈臣氏里的化妆品到底怎么样?"
input_text1 = "帮我写一个英文营销方案,针对iphone"
input_text2 = "写一个冒泡排序"
input_text3 = "写一个文章,题目是未来城市"
input_text4 = "写一个诗歌,关于冬天"
input_text5 = "从南京到上海的路线"
input_text6 = "学前教育专业岗位实习中,在学生方面会存在问题,请提出改进措施。800字"
input_text7 = "根据标题生成文章:标题:屈臣氏里的化妆品到底怎么样?正文:化妆品,要讲究科学运用,合理搭配。屈臣氏起码是正品连锁店。请继续后面的文字。"
input_text8 = "帮我对比几款GPU,列出详细参数对比,并且给出最终结论"
input_list = [input_text0, input_text1, input_text2, input_text3, input_text4, input_text5, input_text6, input_text7, input_text8]
for i, input_text in enumerate(input_list):
  print(f"示例{i}".center(50, "="))
  output_text = answer(input_text)
  print(f"{input_text}{output_text}")

多轮对话

history = []
while True:
    query = input("\n用户:")
    context = "\n".join(history[-5:])
    response = answer(query, context=context)
    history.append(f"用户:{query}\n小元:{response}")
    print(f"小元:{response}")

示例

input_text = ["你好","你是谁?"]
answer_text = ["您好,有什么可以帮助您的吗?", "我是元语智能公司研发的AI智能助手, 在不违反原则的情况下,我可以回答你的任何问题。"]
context = "\n".join([f"用户:{input_text[i]}\n小元:{answer_text[i]}" for i in range(len(input_text))])

input_text = "帮我写个请假条,我生病了"
print(f"示例".center(50, "="))
output_text = answer(input_text, context = context)
print(f"{context}\n用户:{input_text}\n小元:{output_text}")

此文章由OpenAI开源维基百科原创发布,如若转载请注明出处:https://openai.wiki/chatyuan-large-v2.html

(0)
上一篇 2023-04-01 15:00
下一篇 2023-04-03 19:27

相关推荐

  • MLC LLM|多平台开源语言模型

    MLC LLM是一个通用的解决方案,可以在各种硬件后端和本地应用程序上原生部署任何语言模型,目前该模型支持IOS苹果、安卓、Windows、Linux和浏览器等全平台设备部署安装运行,非常方便。

    2023-06-11
    002.3K
  • MiniGPT-4|图像对话模型

    MiniGPT-4使用一个投影层将冻结视觉编码器与冻结的LLM对齐,通过传统预训练和自我生成方式构建高质量图像文本对,再在小型数据集上进行微调训练,该模型在视觉语言任务中表现出了很好的效果。

    2023-04-20
    0154.3K
  • SkyChat|Windows安装教程

    本文主要介绍如何本地化部署SkyChat模型,是由昆仑万维所公开的开源AIGC全系列算法与模型,“昆仑天工”旗下模型包括天工巧汇、天工乐府、天工妙笔、天工智码,涵盖图像、音乐、文本、编程等多模态内容。

    其它模型 2022-12-19
    0586.0K
  • ChatRWKV|网文生成|对话机器人

    ChatRWKV是一个开源项目,是对标ChatGPT的,基于RWKV (100% RNN) 语言模型的类似ChatGPT 的开源工具。该开源项目支持问话对答式交流,而且对中国网文写作方面的能利更好。

    2023-04-05
    0104.0K
  • Text-Generation-WebUI|通用语言模型加载工具

    oobabooga的text-generation-webui可以用来启动、加载、管理几乎所有主流的开源语言模型,并且提供WebUI界面,支持加载LLaMA2和其它羊驼类微调模型训练和LoRA的加载。

    2023-07-21
    0104.0K

回复 PhiltreX

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(4条)

  • 大神,能不能出一个训练语言模型的教程
    大神,能不能出一个训练语言模型的教程 2023-04-16 11:13

    大神,能不能出一个训练语言模型的教程

  • 一个爱好者
    一个爱好者 2023-04-24 01:43

    这个模型搭好以后,我们可以自己跑训练内容,然后通过我们模型给出api接口,给企业服务吗?

微信