DevOps-Model-7B-Chat
🤗 Hugging Face • 🤖 ModelScope
DevOps-Model 是一个开发运维大模型,主要致力于在 DevOps 领域发挥实际价值。目前,DevOps-Model 能够帮助工程师回答在 DevOps 生命周期中遇到的问题。欢迎访问我们 Github 获取更多信息 DevOps-Model
DevOps-Model-7B-Chat 是我们经过高质量 DevOps 语料训练基于 Qwen-7B 加训然后再经过对齐的 Chat 版本模型,我们的 Chat 模型在开源和 DevOps 领域相关的评测数据上可以取得同规模模型中的最佳效果。同时我们也开源了经过加训后的 DevOps-Model-7B-Base 模型,和 14B 参数量的DevOps-Model-14B-Base 和 DevOps-Model-14B-Chat 。
同时我们也在搭建 DevOps 领域专属的评测基准 DevOpsEval,用来更好评测 DevOps 领域模型的效果。
模型评测
我们先选取了 CMMLU 和 CEval 两个评测数据集中和 DevOps 相关的一共六项考试。总计一共 574 道选择题,具体信息如下:
评测数据集 | 考试科目 | 题数 |
---|---|---|
CMMLU | Computer science | 204 |
CMMLU | Computer security | 171 |
CMMLU | Machine learning | 122 |
CEval | College programming | 37 |
CEval | Computer architecture | 21 |
CEval | Computernetwork | 19 |
我们分别测试了 Zero-shot 和 Five-shot 的结果,我们的 DevOps-Model-7B-Chat 模型可以在测试的同规模的开源 Chat 模型中取得最高的成绩,后续我们也会进行更多的测试。
模型 | 模型大小 | Zero-shot 得分 | Five-shot 得分 |
---|---|---|---|
DevOps-Model-7B-Chat | 7B | 62.20 | 64.11 |
Qwen-7B-Chat | 7B | 46.00 | 52.44 |
Baichuan2-7B-Chat | 7B | 52.26 | 54.46 |
Internlm-7B-Chat | 7B | 52.61 | 55.75 |
快速使用
我们提供简单的示例来说明如何利用 🤗 Transformers 快速使用 Devops-Model-7B-Chat 模型
要求
- python 3.8 及以上版本
- pytorch 2.0 及以上版本
- 建议使用CUDA 11.4及以上
依赖项安装
下载模型后,直接通过以下命令安装 requirements.txt 中的包就可以
cd path_to_download_model
pip isntall -r requirements.txt
模型推理示例
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
tokenizer = AutoTokenizer.from_pretrained("path_to_DevOps-Model-7B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("path_to_DevOps-Model-7B-Chat", device_map="auto", trust_remote_code=True, bf16=True).eval()
# 指定 generation_config
model.generation_config = GenerationConfig.from_pretrained("path_to_DevOps-Model-7B-Chat", trust_remote_code=True)
# 第一轮对话
resp, hist = model.chat(query='你是谁', tokenizer=tokenizer, history=None)
print(resp)
# 我是 DevOps-Model,一个由蚂蚁集团平台技术事业群风险智能团队和北京大学联合研发的人工智能机器人,可以与用户进行自然语言交互,并协助解答 DevOps 全生命周期中的各种问题。如果您有任何需要协助的问题或者想要进行闲聊,都可以和我交流哦。
# 第二轮对话
resp2, hist2 = model.chat(query='Java 中 HashMap 和 Hashtable 有什么区别', tokenizer=tokenizer, history=hist)
print(resp2)
# HashMap 和 Hashtable 都是 Java 中常用的哈希表实现,它们的主要区别在于:
# 1. Hashtable 是线程安全的,而 HashMap 不是线程安全的,因此在多线程环境下,Hashtable 的性能更稳定。
# 2. Hashtable 中的方法都是同步的,而 HashMap 的方法不是同步的,因此在多线程环境下,Hashtable 的性能更好。
# 3. Hashtable 中的 key 和 value 都必须实现 Serializable 接口,而 HashMap 中的 key 和 value 可以是任何对象,包括基本数据类型。
# 4. Hashtable 的初始容量是 11,而 HashMap 的初始容量是 16。
# 总之,如果需要在多线程环境下使用哈希表,并且需要保证线程安全,那么应该使用 Hashtable;如果不需要考虑线程安全,或者需要快速地进行哈希表操作,那么应该使用 HashMap。
# 第三轮对话
resp3, hist3 = model.chat(query='线程安全代表什么', tokenizer=tokenizer, history=hist2)
print(resp3)
# 线程安全是指在多线程环境下,程序能够正确地处理并发访问,并且不会出现数据竞争、死锁、饥饿等异常情况。线程安全的程序可以保证在不同的线程之间共享同一个数据结构时,数据的正确性和一致性。线程安全的实现通常需要使用同步机制,如锁、原子操作等,来保证对共享数据的访问是线程安全的。在 Java 中,可以通过 synchronized 关键字、Lock 接口等机制来实现线程安全。
免责声明
由于语言模型的特性,模型生成的内容可能包含幻觉或者歧视性言论。请谨慎使用 DevOps-Model 系列模型生成的内容。 如果要公开使用或商用该模型服务,请注意服务方需承担由此产生的不良影响或有害言论的责任,本项目开发者不承担任何由使用本项目(包括但不限于数据、模型、代码等)导致的危害或损失。
致谢
本项目参考了以下开源项目,在此对相关项目和研究开发人员表示感谢。