BigScience bloom模型

news2024/11/24 17:10:47

简介

项目叫 BigScience,

模型叫 BLOOM,

BLOOM 的英文全名代表着大科学、大型、开放科学、开源的多语言语言模型。

拥有 1760 亿个参数的模型.

BLOOM 是去年由 1000 多名志愿研究人员,学者 在一个名为“大科学 BigScience”的项目中创建的.

BLOOM 和今天其他可用大型语言模型存在的一个主要区别:该模型可以理解多达 46 种人类语言,包括法语、越南语、普通话、印度尼西亚语、加泰罗尼亚语、13 种印度语言(如印地语)和 20 种非洲语言。超过 30% 的训练数据是英文的。该模型还可以理解 13 种编程语言。

下载部署步奏

  1. 新建一个Anaconda conda 环境,然后安装 pytorch >1.3版本

  1. 下载模型

模型下载:https://huggingface.co/bigscience

打开以后 Models 模块就可以看到 它不同参数级别的模型 ,B代表英文简写亿 1B1,就代表模型的参数是1亿1千万.1B3好像丢失了下不了.

这里选择单击 bloom-1b1 模型,然后在单击 Files and versions ,下载所有文件,新建文件夹取名1b1,放里面.

加载本地模型,只要写上本地模型所在的目录

#分词

tokenizer = AutoTokenizer.from_pretrained('./1b1/')

#模型

model = AutoModelForCausalLM.from_pretrained('./1b1/')

3.运行代码,代码放到1b1父级目录

cmd调用模型代码

from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers import pipeline
import torch

#从https://huggingface.co/bigscience/bloom-1b1/tree/main
#下载所有文件,放到新创建的文件夹1b1
checkpoint = "./1b1/"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)#分词
model = AutoModelForCausalLM.from_pretrained(checkpoint)#模型
#设置为gpu,推理更快
device = torch.device('cuda')
model.to(device)
#device=0表示使用第一个可用的GPU
generator = pipeline(task="text-generation", model=model, tokenizer=tokenizer, device=0)



out = generator("你是谁?", max_length=30)
print(out[0]['generated_text']) #输出 "你是谁?我:她说"

因为1B1只是一个文本生成模型,你给一个短语,它接着生成.没有问答功能.而且中文生成效果也不好.

GUI调用代码

from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers import pipeline
import tkinter as tk
import torch

checkpoint = "./1b1/"
#分词
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
#模型
model = AutoModelForCausalLM.from_pretrained(checkpoint)
#设置为gpu,推理更快
device = torch.device('cuda')
model.to(device)
#device=0表示使用第一个可用的GPU
generator = pipeline(task="text-generation", model=model, tokenizer=tokenizer, device=0)

def clean_string(s, substr): #substr=问题,s=回答
    s = s.replace(substr, '')
    lst = s.split(',')
    result_lst = list(set(lst))
    result_lst.sort()
    result = ','.join(result_lst) + ','
    return result


# 创建主窗口
root = tk.Tk()
root.title("Bloom:1亿3千万参数版")
root.geometry("800x600+{}+{}".format(root.winfo_screenwidth() // 2 - 400, root.winfo_screenheight() // 2 - 350))

# 创建输入框和滚动条
input_frame = tk.Frame(root)
input_label = tk.Label(input_frame, text="用户:")

input_text = tk.Text(input_frame, height=10, width=87,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()

# 创建按钮
button_frame = tk.Frame(root)

def show_text():

    #清空 Tkinter Text 组件中的文本
    output_text.delete('1.0', 'end')
    input_str = input_text.get("1.0", "end-1c")
    # 去掉最后一个换行符
    if input_str.endswith('\n'):
        input_str = input_str[:-1]
    
    out = generator(input_str, max_length=30)
    print(out[0])
    anwer = out[0]['generated_text'] #clean_string(out[0]['generated_text']) 
    output_text.insert("end",anwer)
    
button = tk.Button(button_frame, text="回答", command=show_text,width=6, height=3)
button.pack(pady=10)
button_frame.pack()

# 创建输出框和滚动条
output_frame = tk.Frame(root)
output_label = tk.Label(output_frame, text="bloom:")
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()


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)

# 创建右键菜单2
menu2 = tk.Menu(root, tearoff=0)
menu2.add_command(label="复制", command=copy)


# 绑定鼠标右键(第一个文本框)
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
    menu2.post(event.x_root, event.y_root)

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

# 创建按钮
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())



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

生成300字效果

中英翻译 效果 不堪 ,诱导式

问答

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

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

相关文章

信号的FFT变换与加窗

1. fft 傅里叶变换 1.1 傅里叶变换的本质 数学上有一种公式叫做 泰勒展开&#xff1a; 泰勒公式&#xff1a; 其表达的思想&#xff0c;是任意一函数可以有多个指数函数构成 当指数函数的个数趋近于无穷多个&#xff0c;那么组合出来的函数将会逼近原函数&#xff1b; …

Pandas数据查询

Pandas数据查询 Pandas查询数据的几种方法 df.loc方法&#xff0c;根据行、列的标签值查询 df.iloc方法&#xff0c;根据行、列的数字位置查询 df.where方法 df.query方法 .loc既能查询&#xff0c;又能覆盖写入&#xff0c;强烈推荐&#xff01; Pandas使用df.loc查询数据…

深度学习基础(二)-学习是怎么个回事

深度学习基础(一) 引入了一个 helloworld&#xff0c;提出了神经网络的简单关系&#xff0c;也就是一个基础公式 a(L) Sigmoid( a(L-1)*W(L) b(L)) a(L): 第L层神经元被激活之后 进行Sigmoid函数收敛 得到的值 b(L): 第L层神经元被激活阈值 W(L): 第L层神经元 与 第L-1层…

Android安卓中jni封装代码打包为aar

前文【Android安卓中jni与Java之间传递复杂的自定义数据结构】已经介绍jni编译c++代码且已经成功封装成java,但是c++是以源代码形式继承在app中,本文介绍如何将前述jni c++代码以隐藏源代码封装成aar的形式。 1、aar打包 1.1、新建module 按照流程 File -> New Module …

学习周报2.26

文章目录前言文献阅读摘要方法结果深度学习Encoder-Decoder&#xff08;编码-解码&#xff09;信息丢失的问题Attention机制总结前言 This week,I read an article about daily streamflow prediction.This study shows the results of an in-depth comparison between two di…

Oracle-RAC集群主机重启问题分析

问题背景: 在对一套两节点Oracle RAC19.18集群进行部署时&#xff0c;出现启动数据库实例就会出现主机出现重启的情况&#xff0c;检查发现主机重启是由于节点集群被驱逐导致​。 问题: 两节点Oracle RAC19.18集群,启动数据库实例会导致主机出现重启。 问题分析: 主机多次出现…

2023年第八周总周结 | 开学倒数第一周

为什么要做周总结&#xff1f; 1.避免跳相似的坑 2.客观了解上周学习进度并反思&#xff0c;制定可完成的下周规划 一、上周存在问题 发现自己反复犯同样问题&#xff0c;不想反思就不会意识到。总想以面带点的学习&#xff0c;实际上却在原地踏步。问题导向使用ChatGPT&#…

目标检测:DETR详解

1. 概述 DETR: End-to-End Object Detection with Transformers, DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,是Transformer在目标检测的开山之作 – DEtection TRansformer。 相比于传统的Faster-rcnn,yolo系列,DETR有以下几个优点:1).无需…

微信实时音视频通话数据流分析

一、实时音视频的架构 实时音视频通信架构主要包括P2P、SFU、MCU三种方式&#xff0c;其中点对点通信通常以P2P优先&#xff0c;P2P走不通的场景再借助于SFU/MCU。 P2P方式&#xff0c;终端之间点对点的相互收发数据流&#xff0c;音视频流不经过服务器&#xff1b; SFU是端侧…

scrapy下载图片

&#x1f431; 个人主页&#xff1a;莎萌玩家&#x1f64b;‍♂️ 作者简介&#xff1a;全栈领域新星创作者、专注于全栈各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01;&#x1f4ab;系列专栏&#xff1a;网络爬虫、WEB全栈开发&#x1f4e2; 资料…

二叉树的后序遍历-java递归+非递归-力扣145双百方案

一、题目描述给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。示例 1&#xff1a;输入&#xff1a;root [1,null,2,3]输出&#xff1a;[3,2,1]示例 2&#xff1a;输入&#xff1a;root []输出&#xff1a;[]示例 3&#xff1a;输入&#xff1a;root [1]…

使用jenkins实现自动化部署springboot应用

1. 前置准备 这里代码仓库使用gitlab。在介绍如何通过gitlab和jenkins进行自动化部署之前&#xff0c;需要先安装完成gitlab以及jenkins。两种程序的安装方式以及相关配置可以参看以下内容&#xff1a; linux中安装gitlab&#xff1a;linux安装极狐gitlab linux中安装jenki…

Objective-C description 自定义对象的打印格式/输出的字符串 类似于Java 中的 toString 方法

总目录 iOS开发笔记目录 从一无所知到入门 文章目录IntroNSObject 源码测试类截图测试代码输出Intro 在 Java 中&#xff0c;对于自定义类一般会重写集成自Object类的toString方法&#xff0c;这样在打印该类的对象时&#xff0c;打印出的字符串就是我们在 toString() 方法中返…

【Vue3源码】第六章 computed的实现

【Vue3源码】第六章 computed的实现 上一章节我们实现了 ref 及其它配套的isRef、unRef 和 proxyRefs API。这一章开始实现computed计算属性。 认识computed 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。…

[架构之路-121]-《软考-系统架构设计师》-计算机体系结构 -3-汇编语言与ARM系统的初始化

第9章 计算机体系结构 第1-6节 参考前文第7节 ARM汇编语言7.1 程序框架&#xff08;1&#xff09;数据段Data初始化的数据&#xff1a; 初始的全局变量未初始化的数据&#xff1a;未初始化的全局变量堆heap&#xff1a;malloc的内存或数据栈stack&#xff1a;函数的局部变量&am…

ubuntu20系统+RobotiQ 2F-85夹爪+Ros+VMware配置

文章目录环境说明Ros配置Vmware虚拟机串口通信配置运行节点并调试有关问题解决办法rosdep相关缺少ros有关的库与pymodbus相关参考环境说明 环境说明系统版本Ubuntu 20.04.4Ros版本noetic主机形式VMware虚拟机夹爪型号RobotiQ 2F-85 Ros配置 新建ros工作空间并进行初始化 mkdir…

Nginx配置web服务器及部署反向代理

Nginx配置web服务器及部署反向代理配置web服务器location语法部署反向代理代理转发配置web服务器 项目部署到linux上的静态文件代理给Nginx处理。当访问服务器IP时&#xff0c;可以自动返回静态文件主页。 主配置文件中server块对应的次配置include /etc/nginx/conf.d/*.conf…

ESP-01S烧录MQTT固件连接阿里云

烧录MQTT固件 资源下载包 用到的所有烧录攻击和固件都放百度云链接了 提取码&#xff1a;qwlo 烧录固件 淘宝上10块钱左右一个CH340C下载烧录器ESP8266的就可以了。 连接好硬件打开ESPFlashDownloadTool_v3.6.2.2.exe软件&#xff08;记得放到英文目录下不然可能打不开&a…

windows服务编程

文章目录前言方案一&#xff1a;服务程序方案二&#xff1a;后台程序对比windows服务编程windows服务控制附录 - 完整代码前言 在linux中&#xff0c;如果需要一个程序在后台持续提供服务&#xff0c;我们一般会使用守护进程。 守护进程(daemon)是生存期长的一种进程。它们常…

Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新

导读Canonical近日为所有支持的Ubuntu LTS系统发布了新的Linux内核更新&#xff0c;以解决总共19个安全漏洞。新的Ubuntu内核更新仅适用于长期支持的Ubuntu系统&#xff0c;包括Ubuntu 22.04 LTS&#xff08;Jammy Jellyfish&#xff09;、Ubuntu 20.04 LTS&#xff08;Focal F…