玩客云 边缘AI模型 本地搭建部署 llama.cpp qwen

安装基础依赖

打开终端,输入:

复制代码
# 更新系统 
sudo apt update && sudo apt upgrade -y 
# 安装编译工具 
sudo apt install git build-essential cmake python3 python3-pip -y 

安装系统包版本 numpy

复制代码
sudo apt update
sudo apt install python3-numpy -y

这一步保证你可以编译 llama.cpp 和运行 Python 脚本。

下载并编译 llama.cpp

install_llama.sh

复制代码
#!/bin/bash

set -e  # 有错误直接退出,别默默翻车

REPO_URL="https://github.com/ggerganov/llama.cpp"
DIR_NAME="llama.cpp"
BUILD_DIR="build"

echo "== llama.cpp 一键构建脚本 =="

# 1. 检查源码是否存在
if [ ! -d "$DIR_NAME" ]; then
    echo "[INFO] 未检测到 llama.cpp,开始下载..."
        export http_proxy=http://192.168.1.131:7897
        export https_proxy=http://192.168.1.131:7897
        git clone "$REPO_URL"
    echo "[OK] 下载完成"
else
    echo "[OK] 已存在 llama.cpp,跳过下载"
fi

cd "$DIR_NAME"

# 2. 检查 build 目录
if [ ! -d "$BUILD_DIR" ]; then
    echo "[INFO] 创建 build 目录"
    mkdir "$BUILD_DIR"
else
    echo "[OK] build 目录已存在"
fi

cd "$BUILD_DIR"

# 3. CMake + 编译
echo "[INFO] 开始 CMake 配置"
cmake -DCMAKE_BUILD_TYPE=Release ..

echo "[INFO] 开始编译(make -j1)"
make -j1

echo "== llama.cpp 编译完成 =="

-j1 限制单线程,避免 OOM

编译完成后生成 可执行文件

测试:

复制代码
cd ~/llama.cpp/build/bin
./test-backend-ops

Testing 1 devices

Backend 1/1: CPU

Skipping CPU backend

1/1 backends passed

OK

设置 HTTP/HTTPS 代理(临时)网络不好时候

复制代码
export http_proxy=http://192.168.1.131:7897
export https_proxy=http://192.168.1.131:7897
  • 编译后生成的 main 可执行文件,就是推理程序。

  • llama.cpp 支持 ARM CPU,所以 S805 可以直接跑。


下载模型 https://huggingface.co/search/full-text?q=TinyLLM+%2F+GGUF 搜索关键词 TinyLLM / GGUF

进入模型目录:

复制代码
cd ~
mkdir models
cd /root/models

然后用 wget 直接:

复制代码
wget --no-check-certificate --secure-protocol=TLSv1_2 
https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B-Instruct-GGUF/resolve/main/qwen2.5-coder-0.5b-instruct-q5_0.gguf

或者电脑下载后 scp拷贝过去

复制代码
 scp qwen2.5-coder-0.5b-instruct-q5_0.gguf   root@192.168.1.157:/root/models

一键下载脚本 dl.sh

复制代码
#!/bin/bash

# 使用方法: ./dl.sh <下载链接> [保存文件名]
# 示例:
# ./dl.sh https://huggingface.co/Qwen/Qwen2.5-Coder-0.5B-Instruct-GGUF/resolve/main/qwen2.5-coder-0.5b-instruct-q5_0.gguf

# 设置代理
export http_proxy=http://192.168.1.131:7897
export https_proxy=http://192.168.1.131:7897

URL="$1"
FILENAME="$2"

if [ -z "$URL" ]; then
    echo "请提供下载链接"
    exit 1
fi

# 如果没有指定文件名,自动从 URL 提取
if [ -z "$FILENAME" ]; then
    FILENAME=$(basename "$URL")
fi

echo "开始下载: $URL"
echo "保存为: $FILENAME"

wget --no-check-certificate --secure-protocol=TLSv1_2 -c "$URL" -O "$FILENAME" --tries=5 --timeout=30

if [ $? -eq 0 ]; then
    echo "下载完成: $FILENAME"
else
    echo "下载失败,请检查网络或代理设置"
fi

运行

  • -m:模型文件路径

  • -p:输入提示(传感器数据或指令)

  • -n:生成 token 数量(这里 10 个就够)

root目录下

复制代码
./llama.cpp/build/bin/llama-cli -m /root/models/qwen2.5-coder-0.5b-instruct-q5_0.gguf -p "hello" -n 500

效果

一键启动脚本 start.sh

复制代码
#!/bin/bash

MODEL_FILE=${1:-"qwen2.5-coder-0.5b-instruct-q5_0.gguf"}
MODEL_PATH="$HOME/models/$MODEL_FILE"

if [ ! -f "$MODEL_PATH" ]; then
    echo "错误:模型文件 $MODEL_PATH 不存在!"
    exit 1
fi

CTX_SIZE=1024
N_PREDICT=512
TEMP=0.3
THREADS=4

echo "开始加载模型:$MODEL_FILE"
echo "参数:上下文=$CTX_SIZE,生成token数=$N_PREDICT,温度=$TEMP,线程数=$THREADS"

"$HOME/llama.cpp/build/bin/llama-cli" \
  -m "$MODEL_PATH" \
  -c $CTX_SIZE \
  -n $N_PREDICT \
  --temp $TEMP \
  --threads $THREADS \
  --color auto

扩展

安装open webui

复制代码
docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -e OPENAI_API_BASE_URL=http://192.168.1.191:8080/v1 \
  -e OPENAI_API_KEY=sk-local \
  --restart unless-stopped \
  ghcr.io/open-webui/open-webui:main

运行服务端模式

复制代码
/root/llama.cpp/build/bin/llama-server \
  -m /root/models/qwen2.5-coder-0.5b-instruct-q8_0.gguf \
  -c 2048 \
  --host 0.0.0.0 \
  --port 8080

测试服务端

复制代码
curl http://127.0.0.1:8080/v1/models

响应:

{"models":[{"name":"qwen2.5-coder-0.5b-instruct-q8_0.gguf","model":"qwen2.5-coder-0.5b-instruct-q8_0.gguf","modified_at":"","size":"","digest":"","type":"model","description":"","tags":[""],"capabilities":["completion"],"parameters":"","details":{"parent_model":"","format":"gguf","family":"","families":[""],"parameter_size":"","quantization_level":""}}],"object":"list","data":[{"id":"qwen2.5-coder-0.5b-instruct-q8_0.gguf","object":"model","created":1769056357,"owned_by":"llamacpp","meta":{"vocab_type":2,"n_vocab":151936,"n_ctx_train":32768,"n_embd":896,"n_params":630167424,"size":669763072}}]}

API使用:chatbox里面导入

http://192.168.1.191:8080/v1

相关推荐
前端摸鱼匠2 分钟前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测
结局无敌7 分钟前
构建百年工程:cann/ops-nn 的可持续演进之道
人工智能·cann
MSTcheng.8 分钟前
CANN算子开发新范式:基于ops-nn探索aclnn两阶段调用架构
人工智能·cann
renhongxia18 分钟前
如何基于知识图谱进行故障原因、事故原因推理,需要用到哪些算法
人工智能·深度学习·算法·机器学习·自然语言处理·transformer·知识图谱
做人不要太理性9 分钟前
CANN Runtime 运行时与维测组件:异构任务调度、显存池管理与全链路异常诊断机制解析
人工智能·自动化
算法备案代理11 分钟前
大模型备案与算法备案,企业该如何选择?
人工智能·算法·大模型·算法备案
酷酷的崽79811 分钟前
CANN 生态可维护性与可观测性:构建生产级边缘 AI 系统的运维体系
运维·人工智能
哈__12 分钟前
CANN加速Inpainting图像修复:掩码处理与边缘融合优化
人工智能
深鱼~14 分钟前
ops-transformer算子库:解锁昇腾大模型加速的关键
人工智能·深度学习·transformer·cann
笔画人生19 分钟前
进阶解读:`ops-transformer` 内部实现与性能调优实战
人工智能·深度学习·transformer