一文读懂什么是Byzer

目录

一、什么是Byzer?

二、Byzer特性

2.1 语法特性

2.2 数据的管理特性

2.3 支持自定义函数拓展Byzer语法

三、Byzer有哪些功能?

3.1 Byzer-Lang语言特性

3.1.1强大的数据处理能力

3.1.2内置机器学习算法

3.2 Byzer-Lang支持权限控制

3.3 Byzer-LLM拓展

3.4 Byzer-Python拓展

四、认识Byzer-LLM

4.1 Byzer-llm拓展的安装

4.2 Byzer-llm能够干什么?

4.2.1 帮助企业构建一个统一的数据中台

4.2.2 基于开源大模型或者大模型的SaaS服务搭建自己的大模型

4.2.3 助力大模型微调

一、什么是Byzer?

Byzer的前身是 MLSQL,MLSQL 的前身是 StreamingPro,2021年12月,MLSQL更名为Byzer。下图为Byzer的发展历程。

图1  byzer发展历程

Byzer不同时期的形态体现了不同的任务重心,StreamingPro最初的目的是简化Spark Streaming的开发,提升流数据处理的效率。MLSQL将spark由应用转变成服务,提供了RESTful API接口,之后内置了机器学习的能力,全面打通了从原始数据到机器学习算法部署的链路,加快机器学习算法快速落地。而Byzer不仅继承了MLsql的优点,还扩展了Byzer-python,向python的生态拥抱,拓展了Byzer-LLM向最近火爆的大模型拥抱。

Byzer官网号称是一门全新的语言,有自己的语法(简洁)、有自己的解释器、有自己的执行引擎,这门语言的底座基于Spark+Ray。

Byzer不仅是一门全新的语言,也可以看做是一个功能强大的框架,Byzer允许不同角色的研发人员在其生态体系中进行数据分析;进行机器学习、深度学习算法分布式训练、分布式部署等。总之,Byzer允许数据分析、产品研发、算法开发等人员共同使用它简化自己的工作,提升工作效率,更重要的是它可以在数据层面充分协调不同的部门,加快产品从研发到落地的效率。Byzer的功能很多,但本质上还是用一个统一的平台,管理统一的数据,使用统一的语法在上面各自进行业务开发,并将自己开发的产品API暴露。从而缩短产品从研发到部署的时间。

Byzer是一门全新的语言,不过它是一门面向大数据、AI、云原生的分布式语言,它内置了许多插件,可以帮助软件行业工程人员更好地在数据分析、机器学习、AI等领域落地实际的应用项目。这门语言诞生的初衷是从编程语言层面上进行革新,从根本上提高数据平台落地和 AI 工程化的效率,在统一的平台上实现过去要使用多语言、多平台、多组件才能实现的事情。

图2  byzer架构

二、Byzer特性

2.1 语法特性

一切用类似于sql的语句进行数据操作、数据处理、模型训练、模型部署成应用,并且所有的数据都以数据表的形式存储。

图 3 byzer-notebook界面

上图中在指定目录中加载自定义的图片数据集,保存的数据湖中,再次从数据湖中加载数据可以看到输出的是表结构,也就是说Byzer以表的形式管理任何数据。但这是表面上让人感觉数据似乎变成了表,但实际上byzer用hdfs管理文件,所有数据湖中的数据全部都以切片的形式保存到了Byzer主目录的data文件夹中。

2.2 数据的管理特性

在byzer,数据湖中的数据保存到了byzer的安装路径下,但是用户数据是按照租户隔离的,在notebook中的直观体现就是deleta数据湖中的数据大家都可以看见,都可以使用、修改。但是FileSystem中的数据是用户私有的,不同的用户登录进notebook中只能看到自己的数据而能不能查看其他人的数据,

实际上notebook中FileSystem中的数据存储在notebook安装路径中,所以这样看来notebook不仅是byzer官方推荐的代码编辑器,似乎还是一个数据管理平台。因为notebook做到了将数据按照租户隔离。

2.3 支持自定义函数拓展Byzer语法

目前,byzer中仅仅支持是十几个原生语法比如load,select等,其他的直接照搬spark sql语句拓展自己的语法功能,但是sql语句本来就功能有限,比如实现分支语句、循环语句等都是需要拓展的,byzer支持用户使用java、scala语言对其语法进行拓展。

三、Byzer有哪些功能?

Byzer除了Byzer-Lang核心语法之外,还有许多拓展,比如Byzer-LLM、Byzer-Python、Byzer-Notebook等。下面以这三个拓展为例,看一看Byzer有哪些特性。

3.1 Byzer-Lang语言特性

Byzer官方对Byzer-Lang的解释是:Byzer 是一门结合了声明式编程和命令式编程的混合编程语言,其低代码且类 SQL 的编程逻辑配合内置算法及插件的加持,能帮助数据工作者们高效打通数据链路,完成数据的清洗转换,并快速地进行机器学习相关的训练及预测。

Byzer 希望能够提供一套语言、一个引擎,就能覆盖整个数据链路,同时可以提供各种算法、模型训练等开箱即用的能力。

但是我在简单体验了Byzer之后,特别引起我关注的还是以下两大功能:

3.1.1强大的数据处理能力

Byzer-Lang号称Everything is a table,在 Byzer-Lang 中所有的文件都可以被抽象成表的概念。多样的数据源例如:数据库,数据仓库,数据湖甚至是 Rest API 都可以被 Byzer-lang 抽象成二维表的方式读入并进行后续的分析处理。Byzer官网号称,Byzer-lang几乎可以加载市面上主流的数据源和数据格式:

(1)数据源:JDBC协议的数据库,多种云上对象存储,HDFS等

(2)数据格式:例如text,image,csv, json, xml等文件格式

3.1.2内置机器学习算法

Byzer 提供了一些内置的、开箱即用的机器学习算法,其中包括:自动机器学习(AutoML)、K 均值聚类算法(KMeans)、朴素贝叶斯法(NaiveBayes)、交替最小二乘法(ALS)、随机森林(RandomForest)、线性回归(LinearRegression)、逻辑回归(LogisticRegression)、隐含狄利克雷分布(LDA)等。Byzer不仅内置了这些机器学习算法,而且还内置了诸如特征平滑、归一化等特征工程算子。在Byzer上面不需要书写机器学习的数据处理、模型训练等代码,不需要像python中导入第三方包,只需要一行简单的声明即可使用。数据处理部分仅需load、run几个命令即可完成,模型训练也仅需train命令,算法部署上线只需一个插件并结合一个register命令即可以可api访问的形式部署。

3.2 Byzer-Lang支持权限控制

Byzer-Lang可以通过插件的方式控制权限,在Byzer-notebook中体现为FileSystem中展现的数据是按租户隔离的,而DetltaLake的库表则是所有用户都可以看到和使用的。具体来说,以不同的账号登录进Byzer-notebook,看到的FileSystem中的数据是不同的,因为FileSystem中的数据是属于用户私有的,而看到的DetltaLake是相同的。这一点不同于python的jupyter。

Byzer-Lang还支持从编码层面支持自定义用户权限,只需要将自定义的权限控制类实现streaming.dsl.auth.TableAuth类,然后打包放在byzer-lang下的lib文件夹中即可。

3.3 Byzer-LLM拓展

Byzer-LLM是Byzer语言的一个拓展,Byzer官方对Byzer-LLM的定义是:Byzer-LLM 让用户可以端到端的完成业务数据获取,处理,finetune大模型,多场景部署大模型等全流程。该扩展的目标也是为了让企业更好的将业务数据注入到私有大模型(开源或者商业),并且可对外提供多场景部署形态,诸如 ETL, 流式计算,API 服务等。Byzer-LLM 目前支持两类大模型:(1)私有大模型。用户需要自己下载模型权重,在启动模型时指定路径。(2)SaaS大模型。 用户需要提供token。

3.4 Byzer-Python拓展

Byzer通过 Byzer-python 扩展(内置)来支持Python语言。因此,只需要在notebook中声明python环境的地址既可以在notebook中书写python代码。通过 Byzer-python,用户不仅仅可以进行使用 Python 进行 ETL 处理,比如可以将一个 Byzer 表转化成一个分布式DataFrame on Dask 来操作,它还支持各种机器学习框架,比Tensorflow,Sklearn,PyTorch。

四、认识Byzer-LLM

Byzer-LLM是Byzer的一个拓展,这个拓展最早出现于byzer 2.36版本,也就是去年12月份出现的,这个拓展就是为了让byzer拥抱现在火热的大模型。Byzer官方对Byzer-llm的定义是:让用户可以端到端的完成业务数据获取,处理,finetune大模型,多场景部署大模型等全流程。 该扩展的目标也是为了让企业更好的将业务数据注入到私有大模型(开源或者商业)。

图4 byzer-llm模型能力

4.1 Byzer-llm拓展的安装

Byzer-llm是基于byzer-lang,因此需要首先安装好byzer-lang,其次需要安装Ray。Ray 是一个专门执行人工智能框架的分布式执行引擎,让开发者仅需添加数行代码就能轻松转为适合于计算机集群运行的(或单个多核心计算机的)高性能分布式应用而不需要用户关心那些调度、数据传输和硬件错误等问题。Ray 与 TensorFlow、PyTorch 和 MXNet 等深度学习框架互相兼容。怎么安装ray呢?很简单,只需要在conda环境下执行pip install就行了,不过需要注意的是,byzerllm目前仅支持ray=2.5版本的。安装好Ray之后,可以在命令行启动 ray start --head 之后会在本地8275端口进入ray集群的控制面板,在面板上可以看到集群的信息,包含节点存活状态、日志、内存CPU占用情况等。之后需要下载byzer-llm.jar包放到byzer安装目录的plugin目录下。特别需要注意的是需要在安装有ray的conda环境中运行byzer-llm,后续需要其他pip 包,也要安装在这个conda环境中。

4.2 Byzer-llm能够干什么?

4.2.1 帮助企业构建一个统一的数据中台

数据中台是数据分析师,算法工程师,研发人员,产品部门,运营甚至老板日常工作的集中式的控制台,数据中台不干涉其他部门 API 定义的情况下,提供全司视角的(也包括外部 API)的 API 服务视图。随着大数据、人工智能、云计算等技术的迅速发展,云基础设施、基础软件、算法模型等都逐渐完善和成熟,业界对数据平台的效率诉求是越来越高,低效的跨平台数据运转逐渐成为工程师落地数据平台和完成 AI 工程化的痛点。但是,无论是从更换基础设施入手,还是换上更易用的框架,又或是招聘更优秀的研发人才,都无法做到大幅度的效率提升。Byzer官方相信只有在编程语言层面进行革新,才能从根本上提高数据平台落地和 AI 工程化的效率。Byzer 作为一门低代码的开源编程语言,可以在语言层面将数据处理链路、AI 工程中的复杂操作以及权限管控进行抽象,同时降低编程语言的学习成本和上手成本,从而帮助企业真正将效率提升上来。

4.2.2 基于开源大模型或者大模型的SaaS服务搭建自己的大模型

Byzer也可以助力深度学习领域,让每家公司都可以将自己的业务数据注入进商业或者开源大模型,完成私有化大模型应用。

比如,现在要基于开源模型微调出一个属于自己的图片分类模型,首先可以将自己的数据集上传到数据湖中,数据湖支持将数据分布式存储。由于数据湖中的数据是公共的,因此这份数据集可以统一管理起来,比如公司有自己的数据采集标注人员、有模型开发人员,这两类人员可以通过数据湖的数据管理功能而使数据能够及时、准确地在不同工作人员之间流通。

不仅是数据管理,Byzer还支持仅需简单配置即可实现多机多卡模型训练,能够帮助工程师充分调动训练大模型所需的算力。模型训练完毕之后,还支持一键部署,极大加快一款产品的开发流程。因为使用Byzer,可以使用它自有的语法(类SQL语言)连接任何业务库,获取数据,加工数据,并且注入到大模型内进行fintune,然后一键部署成函数封装成API供其他人调用。 并且Byzer 也对有很好的Python支持,完全可以在Byzer平台上使用Python语言进行算法开发,但是也可以使用Byzer的语法在只懂SQL的基础上完成上述工作。比如模型和数据都可以统一保存成表,方便管理,避免到处手动拷贝数据,模型等等。

它还支持从单机到分布式部署,支持GPU调度,可以根据用户需求随时进行算力和存储的扩展。

4.2.3 助力大模型微调

可以从数据处理、模型训练、算法部署层面助力大模型微调,或者助力企业将自己的数据、知识、业务注入进大模型从而构建自己的私有大模型。

以官网给出的百川大模型为例。看一下微调流程。

首先,值得注意的是,截止到2023年7月,Byzer官方测试过的可微调的大模型有三个:chatglm2、baichuan、falcon。而且截止到2023年7月,Byzer-LLM 大模型微调支持两种QA格式的数据。

图5 QA格式

一个是 Alpaca 格式

图 6 Alpaca数据格式

另一种是MOSS格式

图 7  MOSS数据格式

第一步:加载数据和模型

 第二步:配置模型微调参数

 训练好之后保存即可。

上面的训练案例仅仅指定了最大输入长度,其实在微调过程中还有很多参数可以指定

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

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

相关文章

【工程优化问题】基于鲸鱼、萤火虫、灰狼优化算法的张力、压缩弹簧设计问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

el-tree-select那些事

下拉菜单树形选择器 用于记录工作及日常学习涉及到的一些需求和问题 vue3 el-tree-select那些事 1、获取el-tree-select选中的任意层级的节点对象 1、获取el-tree-select选中的任意层级的节点对象 1-1数据集 1-2画面 1-3代码 1-3-1画面代码 <el-tree-selectv-model"s…

(6)所有角色数据分析-6

http://t.csdn.cn/KrurEhttp://t.csdn.cn/KrurE &#xff08;5&#xff09;中的页面&#xff0c;倾向于向用户展示所有数据&#xff0c;但却没有对数据进行比较、分析&#xff0c;用户不能直观的感受到各种数据之间的关系与变化幅度&#xff0c;所以&#xff0c;下面将向用户提…

Node.js |(三)Node.js API:path模块及Node.js 模块化 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;path模块&#x1f4da;Node.js模块化&#x1f407;介绍&#x1f407;模块暴露数据⭐️模块初体验⭐️暴露数据 &#x1f407;导入文件模块&#x1f407;导入文件夹的…

adb 命令行执行单元测试

文章目录 1、配置 adb 环境变量2、adb 执行测试3、官方文档解读 adb 使用&#xff08;1&#xff09;第一条执行测试的adb命令&#xff08;2&#xff09;am instrument 参数&#xff08;3&#xff09;-e 参数 的 key-value键值对&#xff08;4&#xff09;用法用例 4、存在问题 …

Python3 安装、环境变量配置、PyCharm新建Python项目

一、安装包下载 Pyhton官网下载>>最新稳定版的安装包&#xff1a; 找到合适的版本进行下载&#xff1a; 如果下载较慢&#xff0c;此处提供一个3.10.11的稳定版本的安装包&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/16GnWjkGFuSfWfaI9UVX8qA?pwd4u5o 提取…

24聊城大学823软件工程考研

1.软件发展有几个阶段&#xff1f;各有何特征&#xff1f; ①程序设计阶段 硬件特征&#xff1a;价格贵、存储容量小、运行可靠性差。 软件特征&#xff1a;只有程序、程序设计概念&#xff0c;不重视程序设计方法。 ②程序系统阶段。 硬件特征&#xff1a;速度、容量及工作可…

MySQL高阶知识点

MySQL 文章目录 MySQLchar和varchar的区别视图视图的特点 存储过程存储过程的特点 触发器触发器的特点 MySQL引擎索引为什么要有索引呢&#xff1f;什么是索引索引的优势索引的劣势索引类型索引种类组合索引最左前缀原则索引创建原则B树和B树的区别数据库为什么使用B树而不是B树…

Android Https

本质&#xff1a;在客户端和服务端使用非对称加密协商出一套对称密钥&#xff0c;每次发送数据前加密&#xff0c;收到后解密&#xff0c;达到加密传输 http ssl 在http之下增加了安全层&#xff0c;用于保障http的加密传输 HTTPS连接 TLS连接步骤 1.客户端发送 client h…

【Linux】网络基础2

文章目录 网络基础21. 应用层1.1 协议1.2 HTTP 协议1.2.1 URL1.2.2 urlencode和urldecode1.2.3 HTTP协议格式1.2.4 HTTP的方法1.2.5 HTTP的状态码1.2.6 HTTP 常见的header1.2.7 最简单的HTTP服务器 2. 传输层2.1 端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2…

Redis_安装、启动以及基本命令

2.Redis安装 2.1前置处理环境 VMware安装安装centOS的linux操作系统xshellxftp 2.2 配置虚拟机网络 按ctrlaltf2 切换到命令行 cd (/)目录 修改/etc/sysconfig/network-scripts/ifcfg-ens3 vi 命令 按insert表示插入 按ctrlesc退出修改状态 :wq 写入并退出 此文件必须保持一…

10.pod资源限制和健康检查

文章目录 资源限制探针&#xff08;健康检查&#xff09;启动、退出动作总结 资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。当为 pod 中的容器指定了 request 资源时&#xff0c…

Redis_持久化(AOF、RDB)

6. Redis AOF 6.1 简介 目前&#xff0c;redis的持久化主要应用AOF&#xff08;Append Only File&#xff09;和RDF两大机制&#xff0c;AOF以日志的形式来记录每个写操作&#xff08;增量保存&#xff09;&#xff0c;将redis执行过的所有指令全部安全记录下来&#xff08;读…

C语言一些有趣的冷门知识

文章目录 概要1.访问数组元素的方法运行结果 2.中括号的特殊用法运行结果 3.大括号的特殊用法运行结果 4.sizeof的用法运行结果 5.渐进运算符运行结果 小结 概要 本文章只是介绍一些有趣的C语言知识&#xff0c;纯属娱乐。这里所有的演示代码我是使用的编译器是Visual Studio …

入门指南 | 如何系统搭建自己的营销战略学习体系成为领域专家?

独自进入一个行业&#xff0c;如果你没有几年的行业经验或者独特的营销方式&#xff0c;很难在行业里站住脚&#xff08;每个行业潜规则都很多&#xff09;。 每个行业都有周期&#xff0c;都有很多竞争对手&#xff0c;你扎进去一个具体的行业&#xff0c;对于各种资源有限的自…

uni-app实现图片上传功能

效果 代码 <uni-forms-item name"ViolationImg" label"三违照片 :"><uni-file-picker ref"image" limit"1" title"" fileMediatype"image" :listStyles"listStyles" :value"filePathsL…

企业举办活动邀请媒体的意义和重要性

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 企业举办活动并邀请媒体的意义和重要性是多方面的&#xff0c;主要有以下一些&#xff1a; 1. 品牌曝光与宣传&#xff1a;邀请媒体参与企业活动可以提高企业的品牌曝光度。媒体报道能够…

kubernetes的存储卷使用

目录 一、为什么使用存储卷 二、emptyDir存储卷 1.概念 2.创建Pod emptyDir 3. 验证emptyDir存储卷 三、hostPath存储卷 1.概念 2.创建Pod hostPath 3.验证hostPath存储卷 三、nfs共享存储卷 1.概念 2.安装nfs&#xff0c;配置nfs服务 3.创建Pod 4.验证nfs存储卷 一、…

论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models

论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models 1. 文章简介2. 文章概括3 文章重点技术3.1 预训练Pretraining3.1.1 预训练细节3.1.2 Llama2模型评估 3.2 微调Fine-tuning3.2.1 Supervised Fine-Tuning(FT)3.2.2 Reinforcement Learning with Human Feedback(…

(二)结构型模式:2、桥接模式(Bridge Pattern)(C++实现示例)

目录 1、桥接模式&#xff08;Bridge Pattern&#xff09;含义 2、桥接模式应用场景 3、桥接模式的UML图学习 4、C实现桥接模式的示例 1、桥接模式&#xff08;Bridge Pattern&#xff09;含义 桥接模式是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#…