源码编译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 :

bash 复制代码
#!/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-cli

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


user_prompt="你是一个AI助手。请问:深圳在哪里?"

$cmd \
-m $modelpath \
-p "$user_prompt" 

llama.cpp/wmx_test/test_llava_cli.sh :

bash 复制代码
#!/bin/bash

cmd=../build/bin/llama-llava-cli

modelpath=/media/wmx/soft1/huggingface_cache/Bunny-v1_0-4B-gguf

user_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 :

bash 复制代码
#!/bin/bash

# netstat -lnp |grep 8000

# default port=8080 is used by ollama
PORT=8000

cmd=../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 :

bash 复制代码
import openai

PORT=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)
相关推荐
大势智慧21 小时前
大势智慧与土耳其合作发展中心、蕾奥规划签署土耳其智慧城市项目战略合作协议
人工智能·ai·智慧城市·三维建模·实景三维·发展趋势·创新
爱看科技21 小时前
苹果Siri或升级机器人“CAMPOS”亮相,微美全息加速AI与机器人结合培育动能
人工智能·microsoft·机器人
Nowl21 小时前
基于langchain的个人情感陪伴agent
人工智能·机器学习·langchain
UI设计兰亭妙微21 小时前
零售门店选址评估小程序界面设计
人工智能·小程序·零售
泰克生物21 小时前
噬菌体展示技术:基因改造赋能的多领域分子筛选与创新工具
人工智能·基因编辑·精准医疗·噬菌体展示技术·抗体药物研发·抗体筛选·m13 噬菌体
杜子不疼.21 小时前
【Linux】基础IO(一):C 接口文件讲解
linux·c语言·开发语言·人工智能
啊阿狸不会拉杆21 小时前
《机器学习》 第 9 章 - 深度强化学习
人工智能·算法·机器学习·计算机视觉·ai·ml
沛沛老爹21 小时前
从Web到AI:多模态Agent Skills开发实战——JavaScript+Python全栈赋能视觉/语音能力
java·开发语言·javascript·人工智能·python·安全架构
陈希瑞1 天前
GitHub Skill Forge 深度解析:把任意 GitHub 仓库一键锻造成 AI 可调用“技能包”
人工智能·github
工藤学编程1 天前
零基础学AI大模型之LLM存储优化:大量QA与长对话问题实战
人工智能