win10部署 Mistral-7B 文本生成模型

news2024/11/24 14:24:14

Mistral 7B

date : 2023年10月16日

人工智能创业公司Mistral AI以Apache 2.0授权开源Mistral 7B语言模型,Mistral 7B的特别之处在于其规模较小仅有73亿,但是在所有基准测试上,其表现都优于规模更大的语言模型Llama 2 13B,还具有编写程序代码以及处理8,000个token的能力。

整体来说,Mistral 7B在多个基准测试,包括常识推理、世界知识、阅读理解、数学和程序代码等,表现亮眼,除了明显优于Llama 2 13B之外,也和Llama 34B模型打成平手,其编写程序代码的能力接近CodeLlama 7B,并且在英文任务中表现良好。

在大规模多任务语言理解(MMLU)基准测试上,Mistral 7B的表现相当一个3倍大的Llama 2模型,但是却可大幅节省内存消耗,吞吐量也有所增加,其提供了更高的性价比。

Mistral 7B运用了群组查询注意力(GQA)加快推理速度,还使用滑动窗口注意力(SWA),以更小的成本处理较长的串行。群组查询注意力方法分组多个查询并且同时进行处理,通过这种方式,群组查询注意力机制能够减少重复计算,提高推理速度并降低运算成本。

关于 mistral ai开源的模型

基础模型        mistralai/Mistral-7B-v0.1
会话模型        mistralai/Mistral-7B-Instruct-v0.1

4-bit量化模型  Mistral-7B-OpenOrca-GGUF  

使用了 Llama.cpp 技术既可以 cpu运行 又可以 GPU运行

不支持中文语言

部署流程

Mistral-7B-OpenOrca-GGUFicon-default.png?t=N7T8https://huggingface.co/TheBloke/Mistral-7B-OpenOrca-GGUF/tree/main

从上方网址下载合适大小的模型   放到 Mistral-7B-OpenOrca-GGUF/model/mistral-7b-openorca.Q5_K_M.gguf

在一个torch环境中安装  加速库

pip install ctransformers[cuda]

GPU版 运行代码 run.py

  路径:Mistral-7B-OpenOrca-GGUF/run.py

from ctransformers import AutoModelForCausalLM

# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("./model/mistral-7b-openorca.Q5_K_M.gguf", model_file="./model/mistral-7b-openorca.Q5_K_M.gguf", model_type="mistral", gpu_layers=0)

print(llm("AI is going to"))

CPU 版运行代码  run.py

路径:Mistral-7B-OpenOrca-GGUF/run.py

from ctransformers import AutoModelForCausalLM

# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("./model/mistral-7b-openorca.Q5_K_M.gguf", model_file="./model/mistral-7b-openorca.Q5_K_M.gguf", model_type="mistral", gpu_layers=50)

print(llm("AI is going to"))

 

生成效果

有一种黑色幽默的回答风格

 

用户:AI将

------------------------------------------------------------------------------

AI:成为我们生活的一部分,不管我们喜欢与否。随着我们进入一个机器变得更加智能和自主的时代,我们的工作、生活和与他人互动的方式将发生重大变化。

在这篇文章中,我们将讨论人工智能如何改变我们的日常生活,以及可以采取哪些措施来确保技术的安全和负责任地集成。

人工智能及其对各个行业的影响:

1.医疗保健:人工智能已经开始彻底改变医疗保健,帮助医生更准确地诊断疾病,改善患者的预后,甚至帮助药物发现。机器学习算法可以分析大量的医学数据,以识别人类可能看不见的模式。这种能力有助于改善治疗决策、个性化用药和加强患者护理。

2.金融:人工智能正在整个金融部门用于检测欺诈、管理风险、优化投资组合配置,甚至自动化财富管理服务。人工智能聊天机器人也越来越受欢迎,因为它为客户提供即时查询答案,同时协助决策过程。

3.教育:人工智能有潜力通过根据学生的个人需求定制学习体验来改变教育。自适应学习平台可以调整

扩展 GUI版代码

from ctransformers import AutoModelForCausalLM

# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("./model/mistral-7b-openorca.Q5_K_M.gguf", model_file="./model/mistral-7b-openorca.Q5_K_M.gguf", model_type="mistral", gpu_layers=0)

#print(llm("AI is going to"))


import tkinter as tk
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
import os


# 获取当前文件所在的目录路径
current_dir = os.path.dirname(os.path.abspath(__file__))
# 将当前目录和'model'连接起来,获得'model'文件夹的完整路径
save_path = os.path.join(current_dir, 'creat_history.txt')



def write_file(text):
    with open(save_path, 'a', encoding='utf-8') as f:
        f.write(text + '\n')
        
history=[]
def answer(question):
    global history
    history=[]
    response = llm(question)
    print(f"Response from model: {response}")  # Add this line for debugging
    return response


# 创建主窗口
root = tk.Tk()
root.title("AI")
root.geometry("800x600+{}+{}".format(root.winfo_screenwidth() // 2 - 400, root.winfo_screenheight() // 2 - 350))

# 创建输入框和滚动条
input_frame = tk.Frame(root)

clear_button = tk.Button(root, text="清空", width=6, height=3)


def clear_output():
    global history
    output_text.delete("1.0", tk.END)
    history=[]



clear_button.config(command=clear_output)
clear_button.pack(side="right", padx=60)

# 创建输出框和滚动条
output_frame = tk.Frame(root)
output_label = tk.Label(output_frame, text="AI:")
output_text = tk.Text(output_frame, height=26, width=87, padx=6, pady=6)
output_scrollbar = tk.Scrollbar(output_frame)
output_text.config(yscrollcommand=output_scrollbar.set)
output_scrollbar.config(command=output_text.yview)
output_label.pack(side="left", pady=10)
output_text.pack(side="left", pady=10)
output_scrollbar.pack(side="right", fill="y")
output_frame.pack()

output_text.tag_config("user", foreground='green')
output_text.tag_config("ai", background='orange', foreground='white')


input_label = tk.Label(input_frame, text="用户:")
input_text = tk.Text(input_frame, height=10, width=67, padx=6, pady=6)
input_scrollbar = tk.Scrollbar(input_frame)
input_text.config(yscrollcommand=input_scrollbar.set)
input_scrollbar.config(command=input_text.yview)
input_label.pack(side="left")
input_text.pack(side="left", pady=10)
input_scrollbar.pack(side="right", fill="y")
input_frame.pack()


def show_text():
    # 清空 Tkinter Text 组件中的文本
    # output_text.delete('1.0', 'end')
    question = input_text.get("1.0", "end-1c")
    result = answer(question)
    output_text.insert("end", "用户:" + question, "user")
    output_text.insert("end", "\n" + '-'*78)
    output_text.insert("end", "\nAI:" + result)
    output_text.insert("end", '\n'+"="*78)
    output_text.insert("end", "\n\n\n")
    # 滚动到最底部
    output_text.yview_moveto(1.0)
    input_text.delete('1.0', 'end')


# 创建按钮
button_frame = tk.Frame(root)
button = tk.Button(button_frame, text="回答", command=show_text, width=6, height=3)
# 响应回车键 绑定 <Return> 事件
root.bind("<Return>", lambda event: show_text())


def copy():
    global text
    text.event_generate("<<Copy>>")


def cut():
    global text
    text.event_generate("<<Cut>>")


def paste():
    global text
    text.event_generate("<<Paste>>")


# 创建右键菜单
menu = tk.Menu(root, tearoff=0)
menu.add_command(label="复制", command=copy)
menu.add_command(label="剪切", command=cut)
menu.add_command(label="粘贴", command=paste)


# 绑定鼠标右键(第一个文本框)
def show_menu1(event):
    global text
    text = input_text
    menu.post(event.x_root, event.y_root)


input_text.bind("<Button-3>", show_menu1)


# 绑定鼠标右键(第二个文本框)
def show_menu2(event):
    global text
    text = output_text
    menu.post(event.x_root, event.y_root)


output_text.bind("<Button-3>", show_menu2)

button.pack(side="right", padx=60)
button_frame.pack()

root.lift()
# 运行主循环
root.mainloop()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1097972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记使用docker部署项目出现问题

我的docker-compose.yml内容如下&#xff1a; version: "3" services:my_server:build: .restart: alwaysdepends_on:mysql:condition: service_startedports:- 9999:9999links:- mysqlmysql:image: mysql:latest # mysql:oraclerestart: alwayscontainer_name: mys…

陈宥维《虎鹤妖师录》“显眼包”太子成长记 表演灵动获好评

由爱奇艺出品&#xff0c;黄晓达同名少年热血漫画改编&#xff0c;郭虎导演&#xff0c;蒋龙、张凌赫、王玉雯、陈宥维主演的古装玄幻剧《虎鹤妖师录》正在热播中。该剧讲述了虎子、祁晓轩、赵馨彤、王羽千等热血少年组团闯关&#xff0c;在一次次降妖和追寻真相的过程中收获成…

CSS 效果:多列文字,第一行对齐,flex方式元素被挤压

如图效果&#xff1a;2列&#xff0c;第一列只有一行&#xff0c;第二列多行。要求第一行对齐 实现&#xff1a;使用flex 如果不配置flex-shrink的话&#xff0c;第一列会被挤压 给第一列&#xff1a;备注配置压缩属性&#xff1a; flex-shrink&#xff1a;0。 <!DOCTYPE…

01简单的CMakeLists.txt示例

CMakeLists.txt 基础 CMake 是一个项目构建工具&#xff0c;并且是跨平台的。关于项目构建我们所熟知的还有Makefile&#xff08;通过 make 命令进行项目的构建&#xff09;&#xff0c;大多是IDE软件都集成了make&#xff0c;比如&#xff1a;VS 的 nmake、linux 下的 GNU ma…

EDU挖掘

1.信息搜集2.漏洞挖掘 1.信息搜集 没事干&#xff0c;准备找个证书站挖挖看&#xff0c;没想到碰到一个小通用系统。 看样子还挺多功能可以测&#xff0c; 这里利用F12 查看前端源码js 或者css文件&#xff0c;直接用hunter或者fofa搜索到同一类型的网站。 Hunter语法&#…

浅谈变电站运维技术模式及应用-安科瑞黄安南

近年来&#xff0c;市场电子资源需求量的逐步上升&#xff0c;使变电系统建设逐步向复杂环境拓展。为保障变电系统运行稳定性及人员管理安全性&#xff0c;无人值班变电站技术运用势在必行&#xff0c;是解决复杂条件下变电设备运行不稳定及人员设备管理效益低下问题的重要核心…

Redis 集群详解及搭建过程

1. 引言 从3.0版本开始&#xff0c;redis具备了集群功能&#xff0c;实现了分布式、容错、去中心化等特性&#xff0c;在生产环境中对于保证数据一致性和安全性、提高系统响应能力都有着很必要的意义。 本文我们就来介绍 redis 集群的三种搭建模式和搭建方法。 目前Redis 7.0对…

Leetcode算法解析——三数之和

1. 题目链接&#xff1a;15. 三数之和 2. 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元…

2023年10月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

[Python小项目] 利用Python进行彩票选择方案及分析

利用Python进行彩票选择方案及分析 一、前言 你是否曾梦想过一夜暴富&#xff1f;是否曾想过如果能幸运地中得大奖&#xff0c;生活会有怎样的改变&#xff1f;彩票&#xff0c;这个看似简单的游戏&#xff0c;却可能为我们带来巨大的财富。然而&#xff0c;如何选择号码&…

【Android】Intel HAXM installation failed!

Android Studio虚拟机配置出现Intel HAXM installation failed 如果方案一解决没有作用&#xff0c;就用方案二再试一遍 解决方案一&#xff1a; 1.打开控制面板 2.点击左侧下面最后一个程序 3.点击启用或关闭Windows功能 4.勾选Windows虚拟机监控程序平台 5.接下来重启电脑…

4.2 网际协议IP

思维导图&#xff1a; 前言&#xff1a; **笔记 4.2 - 网际协议IP** 1. **定义与重要性**&#xff1a; - 网际协议IP是TCP/IP体系中的核心协议之一。 - 它是互联网的关键标准协议。 2. **发展背景**&#xff1a; - 又被称为Kahn-Cerf协议。 - 由Robert Kahn和…

并发数计算方法

1、性能测试计算TPS 性能测试的TPS,大都是根据用户真实的业务数据(运营数据)来计算的 普通计算方式:TPS=总请求数/总时间 二八原则计算方法:TPS=总请求*0.8/总时间*0.2 (二八原则就是指80%的请求在20%的时间内完成) 总结:普通计算方式只能满足基本的要求,但是不能很好覆…

为什么使用C#开发软件的公司和程序员都很少?

为什么使用C#开发软件的公司和程序员都很少&#xff1f; 讲几个故事吧&#xff01;如果不爱听&#xff0c;就当个故事。 一个老东家做互联网的&#xff0c;java大概四五十人&#xff0c;四五十个前端&#xff0c;十个左右的c# &#xff0c;那年做点播机&#xff0c;招了两个嵌入…

常见的8个JMeter压测问题

为什么在JMeter中执行压力测试时&#xff0c;出现连接异常或连接重置错误&#xff1f; 答案&#xff1a;连接异常或连接重置错误通常是由于服务器在处理请求时出现问题引起的。这可能是由于服务器过载、网络故障或配置错误等原因导致的。 解决方法&#xff1a; 确定服务器的负载…

嵌入式软件行业真的没前途吗?

嵌入式软件行业真的没前途吗&#xff1f; 嵌入式对新人极不友好&#xff0c;前途是非常好的&#xff0c;问题是你光混日子等不到&#xff0c;没有靠谱的职业路径&#xff0c;你也学不成。最近很多小伙伴找我&#xff0c;说想要一些嵌入式资料&#xff0c;然后我根据自己从业十年…

广州股票开户怎么选择券商最好?炒股开户佣金最低是多少?

广州股票开户怎么选择券商最好&#xff1f;炒股开户佣金最低是多少&#xff1f; 开设股票账户通常需要以下步骤&#xff1a; 1.选择证券公司或经纪商。您可以通过互联网搜索或参考朋友的推荐&#xff0c;选择一家有信誉且服务良好的证券公司或经纪商。 2.填写开户申请表。您…

多用户多回路宿舍用电管理解决方案-安科瑞黄安南

01 引言 近几年来&#xff0c;因违规使用大功率恶性负载电器导致宿舍失火的安全事故在各大高校时有发生&#xff0c;给学生和学校都带来了巨大的损失。北京大学、哈尔滨工业大学、上海商学院以及俄罗斯人民友谊大学等高校学生公寓发生的火灾给高校学生公寓的安全用电敲响…

「深入探究Web页面生命周期:DOMContentLoaded、load、beforeunload和unload事件」

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. DOMContentLoaded 1.1 属性 1.2 A…

3500/15 106M1079-01 支持先进和复杂的人工智能计算

3500/15 106M1079-01 支持先进和复杂的人工智能计算 耐能NPU IP系列允许ResNet、YOLO和其他深度学习网络在离线环境下的边缘设备上运行。耐能NPU IP为edge AI提供完整的硬件解决方案&#xff0c;包括硬件IP、编译器、模型压缩。它支持各种类型的卷积神经网络(CNN)模型&#xf…