当前位置: 首页 > news >正文

源码编译llama.cpp 、ggml 后端启用自定义BLAS加速

源码编译llama.cpp 、ggml 后端启用自定义BLAS加速

我在llama.cpp 官网上提交了我的解决方案:How to setup OpenBlas on windows? #625
GGML 官网 https://github.com/ggerganov/ggml/issues/959

windows on arm 编译 llama.cpp 、ggml 后端启用自定义BLAS加速

我这以编译 windows on arm 的 llama.cpp 、ggml 为例子,其它情况同样可以

参考我的文章 《源码编译 openblas for windows on arm》 我用了自己编译的这个 openblas

原理 blas 加速是通过编译ggml提供的

所以修改llama.cpp/ggml/src/CMakeLists.txt ,在这一行代码if (GGML_BLAS) 前面添加以下代码:

自定义编译blas:

# add custom blas
if (CUSTOM_BLAS)set(BLAS_ROOT "C:/workspace/program/openblas")set(BLAS_INCLUDE_DIRS"${BLAS_ROOT}/include/""${BLAS_ROOT}/include/openblas")set(BLAS_LIBRARIES "${BLAS_ROOT}/lib/openblas.lib")list(APPEND GGML_CDEF_PUBLIC GGML_USE_BLAS)set(GGML_HEADERS_BLAS ../include/ggml-blas.h)set(GGML_SOURCES_BLAS ggml-blas.cpp)set(GGML_EXTRA_LIBS     ${GGML_EXTRA_LIBS}     ${BLAS_LIBRARIES})set(GGML_EXTRA_INCLUDES ${GGML_EXTRA_INCLUDES} ${BLAS_INCLUDE_DIRS})
endif()

然后编译时指定 CUSTOM_BLAS=ON:


cmake -B build -DGGML_BLAS=OFF  -DCUSTOM_BLAS=ON
cmake --build build --config Release

测试

llama.cpp/wmx_test/test_cli.sh :


#!/bin/bash# ./llama-cli --hf-repo hfxing/Qwen2-1.5B-Q4_K_M-GGUF --hf-file qwen2-1.5b-q4_k_m.gguf -p "The meaning to life and the universe is"cmd=../build/bin/llama-climodelpath=/media/wmx/soft1/huggingface_cache/Qwen2-1.5B-Q4_K_M-GGUF/qwen2-1.5b-q4_k_m.gguf
# modelpath=/media/wmx/soft1/huggingface_cache/Qwen1.5-1.8B-Chat/ggml-model-f16.ggufuser_prompt="你是一个AI助手。请问:深圳在哪里?"$cmd \
-m $modelpath \
-p "$user_prompt" 

llama.cpp/wmx_test/test_llava_cli.sh :


#!/bin/bashcmd=../build/bin/llama-llava-climodelpath=/media/wmx/soft1/huggingface_cache/Bunny-v1_0-4B-ggufuser_prompt="A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. \
USER: <image>\n Why is the image funny? \
ASSISTANT:" # img_url="https://pic35.photophoto.cn/20150511/0034034892281415_b.jpg"$cmd -m $modelpath/ggml-model-Q4_K_M.gguf \
--mmproj $modelpath/mmproj-model-f16.gguf \
--image $modelpath/images/example_2.png \
-c 4096 -e \
--temp 0.0 \
# --log-disable \
-p "$user_prompt"

llama.cpp/wmx_test/test_server.sh :


#!/bin/bash# netstat -lnp |grep 8000# default port=8080 is used by ollama
PORT=8000cmd=../build/bin/llama-server modelpath=/media/wmx/soft1/huggingface_cache/Qwen2-1.5B-Q4_K_M-GGUF/qwen2-1.5b-q4_k_m.gguf# modelpath=/media/wmx/soft1/huggingface_cache/Qwen1.5-1.8B-Chat/ggml-model-f16.gguf$cmd \
-m $modelpath \
--port $PORT 

llama.cpp/wmx_test/test_client.sh :

import openaiPORT=8000
openai.api_key = "sk-no-key-required"client = openai.OpenAI(base_url=f"http://localhost:{PORT}/v1",
)completion = client.chat.completions.create(model="gpt-3.5-turbo", messages=[{"role": "system", "content": "You are an AI assistant. Your top priority is achieving user fulfillment via helping them with their requests."},{"role": "user", "content": "深圳在哪里?"}]
)print(completion.choices[0].message)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python实现冒泡排序的算法
  • 分布式技术概览
  • 数据库常规操作
  • 小众语言ruby在苹果中的初步应用
  • 【jvm】记一次hive堆heap内存溢出的排查
  • Spring自定义注解
  • C++中使用分治法求最大值
  • 为什么要用docker?
  • 函数题 6-2 多项式求值【PAT】
  • MySQL——数据库的高级操作(二)用户管理(1)uer表
  • C++ | Leetcode C++题解之第405题数字转换为十六进制数
  • 搭建Eureka高可用集群 - day03
  • ollama语言大模型部署使用
  • 408(笔试)
  • AIGC图片相关知识和实战经验(Flux.1,ComfyUI等等)
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Bootstrap JS插件Alert源码分析
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • mysql外键的使用
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python_OOP
  • Sass 快速入门教程
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • vue数据传递--我有特殊的实现技巧
  • 给初学者:JavaScript 中数组操作注意点
  • 那些被忽略的 JavaScript 数组方法细节
  • 设计模式走一遍---观察者模式
  • 手写双向链表LinkedList的几个常用功能
  • 在Docker Swarm上部署Apache Storm:第1部分
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​插件化DPI在商用WIFI中的价值
  • ​数据链路层——流量控制可靠传输机制 ​
  • !!java web学习笔记(一到五)
  • # Panda3d 碰撞检测系统介绍
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)Jupyter Notebook 下载及安装
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (12)目标检测_SSD基于pytorch搭建代码
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二十四)Flask之flask-session组件
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (转)3D模板阴影原理
  • (转)linux 命令大全
  • ***原理与防范
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure,make,make install的作用
  • ./configure、make、make install 命令
  • .DFS.