1. 简介

1.1 飞腾腾锐D2000

飞腾信息技术有限公司(以下简称“飞腾公司”)是CPU研发设计的国家队、国内领先的自主核心芯片提供商,由中国电子信息产业集团、天津市滨海新区政府和天津先进技术研究院2014年联合支持成立。

飞腾腾锐D2000是一款面向桌面应用的高性能通用处理器,集成8个飞腾自主研发的高能效处理器核FTC663,兼容64位ARMv8指令集并支持ARM64和ARM32两种执行模式,支持单精度、双精度浮点运算指令和ASIMD处理指令,主频最高2.3GHz,支持硬件虚拟化,支持商业和工业分级。

目前,飞腾信息技术有限公司旗下的腾锐D2000、D3000和腾珑E2000系列产品已深度适配了OpenHarmony 3.2release、4.0release、4.1release版本,开源仓库链接如下:https://gitee.com/phytium_embedded/phytium-openharmony-device

1.2 Deepseek大模型

DeepSeek大模型是由北京深度求索人工智能基础技术研究有限公司开发的一款基于Transformer架构的大型语言模型。它具备强大的自然语言理解和生成能力,能够处理多种复杂的语言任务,如智能对话、文本生成、语义理解等。DeepSeek大模型的诞生,标志着人工智能在自然语言处理领域取得了重大突破。

2. 运行效果

下图是在腾锐D2000 + OpenHarmony4.1release环境下运行deepseek大模型的效果图,1.5b模型推理速度约为7.60 tokens/s。

img

3. 方案设计

OpenHarmony中c库使用的是musl,使用llvm开源项目的C ++ 标准库libc ++ 作为C++运行时库。在OpenHarmony上运行ollama最快的方法就是补充ollama依赖的GNU C 库(glibc)和GNU C++ 库(libstdc++)到腾锐D2000开发板中去,这里采用这个方案。

  • 开发环境:
  1. ollama64位二进制;
  2. OpenHarmony 4.1release arm64位镜像;
  3. 飞腾 腾锐D2000开发板;

4. 具体实现

  1. 首先获取ollama arm64二进制ollama-linux-arm64.tgz,下载链接:
    https://github.com/ollama/ollama/releases

img

  1. 获取glibc 2.27以上版本的二进制,这里提取出来命令为glibc.tar.gz,参考链接:
    https://archlinuxarm.org/packages/aarch64/glibc

  2. 获取OpenHarmony源码下面gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib下的所有so,打包成压缩包。

    cd gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc
    tar -czvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz lib
    
  3. 将下载完成以及打包完成的ollama-linux-arm64.tgz、glibc.tar.gz和gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz全部推送到腾锐D2000开发板中的data目录并且解压,解压完成后需要将其拷贝到系统根目录下的lib目录下。

    推送:
    hdc file send gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz /data
    hdc file send glibc.tar.gz /data
    hdc file send ollama-linux-arm64.tgz /data
    新建命令行页:
    hdc shell 
    解压压缩包:
    cd data
    tar -zxvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz /data/
    tar -xvf glibc.tar.gz /data/
    tar -zxvf ollama-linux-arm64.tgz /data/
    拷贝至系统根目录下的/lib文件夹:
    mount -o remount,rw /
    cd 
    cp /data/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/* /lib
    
  4. 在当前的shell页开启ollama服务

    设置Ollama模型的下载位置
    export OLLAMA_MODELS=/data
    export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
    mount -o remount,rw /
    cd data/bin
    ./ollama serve #启动ollma系统服务
    
  5. 新建另外一个hdc shell运行模型

    hdc shell
    mount -o remount,rw /
    export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
    cd data/bin
    拉取deepseek-r1:1.5b模型:
    ./ollama pull deepseek-r1:1.5b #耗时3+小时
    启动deepseek-r1:1.5b模型:
    ./ollama run deepseek-r1:1.5b #运行后就可以提问了
    
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐