Byzer-LLM 是基于 Byzer 的一个扩展,让用户可以端到端的完成业务数据获取,处理,finetune大模型,多场景部署大模型等全流程。 该扩展的目标也是为了让企业更好的将业务数据注入到私有大模型(开源或者商业),并且可对外提供多场景部署形态,诸如 ETL, 流式计算,API 服务 等。
下面是使用 Byzer-LLM 完成大模型的一个工作流程图:
可以有两种安装方式,一种是无脑运行shell脚本,但是注意这个shell脚本要在 CentOS 8 / Ubuntu 20.04 / Ubuntu 22.04上运行,其他系统可能会出错。经历漫长的等待之后,就可以在自己的linux电脑中完成单机安装,包含一整套的Byzerllm环境(Byzer-lang引擎+Ray+conda环境+cuda驱动等),这种方式叫做裸机全自动化部署,这种方式需要自己手动下载Byzer-notebook。
还有一种方式是手动部署:自己下载Byzer引擎+自己创建conda运行环境+自己下载notebook+自己下载Byzerllm拓展(就是一个jar包)
注意:(只支持 CentOS 8 / Ubuntu 20.04 / Ubuntu 22.04)
在机器上执行如下指令:
git clone https://gitee.com/allwefantasy/byzer-llm
cd byzer-llm/setup-machine
接着切换到 Root用户下执行如下脚本:
ROLE=master./setup-machine.sh
此时会完成 byzerllm 账号创建登工作。
接着 切换到 byzerllm 账号下,再次执行:
ROLE=master ./setup-machine.sh
会完整的安装包括显卡驱动,cuda 工具集,一整套 Byzer-LLM 环境,之后就可以访问 http://localhost:9002 来使用 Byzer-LLM 了。用户如果想组件集群,对于从节点,可以使用如下命令,也是分别执行两次。
ROLE=worker ./setup-machine.sh
使用 Byzer-LLM 需要做如下工作:
- 安装 Byzer-lang/Byzer Notebook
- 创建一个 byzerllm-desktop Python环境,并按要求安装依赖(这一步中包含安装Ray)
- 启动 Ray
- 安装 Byzer-LLM 扩展
注意:Byzer-LLM 需要在有 Nvidia 的 GPU 的机器上才能正常工作。推荐 Ubuntu 22.04, 同时确保安装了驱动。可以直接安装他的大礼包: CUDA Toolkit 12.2 Downloads | NVIDIA Developer
下载:
然后解压。
首先是启动 Byzer-lang 引擎,
进入 byzer-lang-all-in-one-linux-amd64-3.3.0-2.3.8 目录,执行如下命令即可启动 Byzer 引擎:
./bin/byzer.sh start
# 重启可以用下面的命令
# ./bin/byzer.sh restart
启动完成后就可以访问 9003 端口了。注意,启动byzer-lang的时候如果遇到由于java环境报错,那么需要java-home指定为byzer-lang目录中的jdk8,即使你的电脑之前有Java8环境。
注意:如果需要访问 file:// 或者对象存储的绝对路径,则需要修改 ${BYZER_HOME}/conf/byzer.properties.overwrite,添加如下配置(显示的罗列哪些schema可以用绝对路径): spark.mlsql.path.schemas=oss,s3a,s3,abfs,file
启动 Byzer Notebook 则需要提前准备一个 MySQL 数据库,建议 5.7 版本的,然后创建一个名称叫做 notebook 的数据库。
现在可以进入 Byzer-Notebook-1.2.5, 修改 conf/notebook.properties 文件,
根据数据库实际地址修改数据库配置部分:
notebook.database.type=mysql
notebook.database.ip=127.0.0.1
notebook.database.port=3306
notebook.database.name=notebook
notebook.database.username=root
notebook.database.password=root
特别注意,下面的参数 notebook.user.home
务必需要修改。 该参数其实是指定的 Byzer 引擎存储用户文件数据所在的目录。你需要选一个实际可用的目录。默认的 /mlsql
因为在根目录下,往往Byzer引擎没有权限创建。这会导致在 Byzer-Notebook 上传文件到引擎失败等问题。
notebook.user.home=/mlsql
现在就可以启动 Notebook了:
./bin/notebook.sh start
## 重启可以用
## ./bin/notebook.sh restart
此时就可以访问 9002 端口了,进入 Notebook 界面开始工作了。
(1)使用 conda 创建一个 Python 3.10.10
conda create --name byzerllm-desktop python=3.10
(2)现在可以切换到环境 byzerllm-desktop
,安装 pip 依赖:https://github.com/allwefantasy/byzer-llm/blob/master/demo-requirements.txthttps://github.com/allwefantasy/byzer-llm/blob/master/demo-requirements.txt
继续保持在环境 byzerllm-desktop
, 然后使用如下命令启动 Ray:
CUDA_VISIBLE_DEVICES=0,1 ray start --head \
--dashboard-host 192.168.3.224 \
--num-gpus=2 \
--object-store-memory 40949672960 \
--storage /my8t/byzerllm/ray_stroage \
--temp-dir /my8t/byzerllm/ray_temp
简要解释下,CUDA_VISIBLE_DEVICES 配置让 Ray 可以看到的 GPU,从0开始。
根据自身的显卡情况填写(显卡显存需要>=8g)。
注意,Byzer
ray启动命令:
ray start --include-dashboard true --dashboard-host 0.0.0.0 --head
之后可以在命令中看到日志:
ray默认启动端口在本地8265端口,如果在本地看到如下界面证明ray启动成功。
Byzer-LLM 作为一个扩展,可以有两种方式安装。第一种在线安装, 在 Byzer-Notebook 的 Cell 中执行如下命令:
!plugin app add - "byzer-llm-3.3";
第二种方式是离线安装, 在这个 Index of /byzer-extensions/nightly-build/ 中下载 byzer-llm-3.3_2.12-0.1.0-SNAPSHOT.jar , 然后将其放到 Byzer 引擎 ${BYZER_HOME}/plugin
目录里,然后在 ${BYZER_HOME}/conf/byzer.properties.overwrite
中添加如下参数 streaming.plugin.clzznames=tech.mlsql.plugins.llm.LLMApp
。
推荐安装好notebook之后,在Notebook界面运行!plugin app add - "byzer-llm-3.3"
需要按照顺序依次启动Byzer-lang、Ray、Byzer-notebook
3.1 启动Byzer-lang
在Byzer-lang目录中bin目录下执行
/bin/bash byzer.sh start
之后浏览器访问9003端口,如果页面显示,即为byzer-lang启动成功。
3.2 启动Ray
在安装时创建的byzer-desktop环境中执行
ray start --head
该命令是最简洁的命令,如果需要指定gpu、内存等可以在该命令后指定.
3.3 启动 notebook
启动notebook之前需要查看自己的Mysql5.7有没有启动。确保mysql5.7服务正常,再在byzer-notebook的bin目录下运行
/bin/bash notebook start