# baize **Repository Path**: openkylin/baize ## Basic Information - **Project Name**: baize - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: upstream - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-05-08 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

白泽

帝南巡狩,至于东滨,泽兽出,能言,达万物之情
白泽——面向RISC-V和openkylin的本地问答、多模态知识检索增强生成助手
> [!tip] > > 由于项目文件众多,归档时可能会上传错误版本,请您使用`issue`或者邮件进行反馈,谢谢理解! ## 主要贡献 - 针对RISC-V架构和openKylin操作系统适配了PyTorch深度学习框架,添加了向量指令集、并行支持,在4核RISC-V CPU(TH1520)上,提供400%以上的算子加速。 - 针对设备的特性,作品使用`FP32`并行向量化`PREFILL`,`BF16`单核`DECODE`的方式,分别提升了CPU性能受限和内存带宽受限时LLM的推理性能,并在此基础上,开发了能够理解音视频、网页和文档的多模态RAG应用。 ## 目录结构 ```text ├── docs # 存放进阶使用、开发文档 ├── media # 存放文档使用的二进制文件 ├── model # 存放项目需要的模型权重 ├── prebuilt_pip_wheel # 存放预构建的python包 ├── prebuilt_riscv_bin # 存放预构建的二进制依赖 ├── source # 存放经过修改后的源码包,如pytorch ├── test_sample # 存放简单的测试数据 ``` ## 配置教程 用以配置`白泽`项目基本环境的简单教程,不涉及复杂操作; ### 文件准备 完整文件树如下(忽略了过深的文件): ```text ├── baize_bf16_modeling_qwen2.py ├── baize_config.py ├── baize_gp_util.py ├── baize_print_util.py ├── baize_rag.py ├── debug.py ├── docs │ ├── OpenBLAS交叉编译.md │ ├── PyTorch算子性能测试.md │ └── TH1520 玄铁编译链优化.md ├── LICENSE ├── media ├── model │ ├── Qwen1.5-0.5B-Chat.tar.gz │ └── whisper-tiny-chinese-v2.tar.gz ├── prebuilt_pip_wheel │ ├── aiofiles-23.2.1-py3-none-any.whl │ ├── # 忽略过多的项目 ├── prebuilt_riscv_bin │ ├── openblas-0.3.26-release-baizebuild.tar.gz │ └── README.md ├── README.md ├── source │   ├── build_matplotlib.md │   ├── build_openblas.md │   ├── build_pytorch.md │   ├── matplotlib-3.2.1.tar.gz │   ├── OpenBLAS-0.3.26.tar.gz │   └── pytorch-v2.1.0.tar.gz ├── test_sample │ ├── test_url.txt │ ├── 平头哥.wav │ ├── 白泽简介.md │ └── 白泽简介.pdf ├── unit_test.py └── webui.py ``` 对模型文件进行解压: ```sh tar -xf Qwen1.5-0.5B-Chat.tar.gz tar -xf whisper-tiny-chinese-v2.tar.gz ``` ### 环境安装 > 终端的当前目录应为`白泽`项目目录 安装`python3.10` `pip 24.0` ```sh sudo apt install python3-pip python3.10 python3.10 -m pip install pip==24.0 ``` 安装`python-dev` ```sh sudo apt install python-dev ``` 安装`ffmpeg` ```sh sudo apt install ffmpeg ``` 安装预构建的二进制依赖项 ```sh cd prebuilt_riscv_bin/ tar -xf openblas-0.3.26-release-baizebuild.tar.gz cd openblas-0.3.26-release-baizebuild ./install.sh ``` 安装预构建的`pip`包 ```sh cd baize python3.10 -m pip install prebuilt_pip_wheel/* --no-deps ``` ## 使用教程 1. WebUI模式(包含`白泽`的全部功能): ```sh python3.10 webui.py ``` 2. 终端形式(仅用于debug): ```sh python3.10 debug.py ``` ## 高级教程:源代码(交叉)编译 ### mtaplotlib 在riscv物理机或虚拟机中编译 ```sh python3.10 setup.py bdist_wheel ``` 完成后`dist`目录即为目标文件 ### openblas 在x86 Linux中交叉编译 使用到的工具:`Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.1`,在玄铁官网下载,解压至用户目录`~` 进入openblas目录 ```sh export PATH=~/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.1/bin:$PATH make HOSTCC=gcc TARGET=C910V CC=riscv64-unknown-linux-gnu-gcc FC=riscv64-unknown-linux-gnu-gfortran export PREFIX=build mkdir $PREFIX make PREFIX=$PREFIX install ``` 此时编译完成的二进制文件会在`build`文件夹中,安装只需将build文件夹的内容复制到openKylin的/usr目录 ### pytorh 在riscv物理机或虚拟机中编译 前提: 1. 系统已安装OpenBLAS 2. 系统已安装sleef ```sh sudo apt install cmake ninja python3.10 -m pip install -r requirements.txt ``` ```sh export USE_CUDA=0 export USE_CUDNN=0 export USE_ROCM=0 export USE_VULKAN=0 export USE_NUMPY=1 export USE_OPENCV=0 export USE_GLOO=0 export USE_DISTRIBUTED=0 export USE_TENSORPIPE=0 export BUILD_TEST=0 export USE_TENSORRT=0 export ATEN_NO_TEST=1 export BUILD_BINARY=0 export protobuf_BUILD_TESTS=0 export USE_SYSTEM_SLEEF=1 export USE_NNPACK=0 export BUILD_CAFFE2=0 export BUILD_FUNCTORCH=0 export USE_QNNPACK=0 python3.10 -u setup.py bdist_wheel ``` ## 高级教程:性能测试(benchmark) 进入pytorch的源代码文件夹(`source/pytorch*`) 指定使用的线程数量(可选) ```sh export TARGET_THREADS=4 export OPENBLAS_NUM_THREADS=$TARGET_THREADS export GOTO_NUM_THREADS=$TARGET_THREADS export OMP_NUM_THREADS=$TARGET_THREADS python3 -m pt.matmul_test ``` ```sh python3 -m pt.matmul_test ```