Files
snippets/llama-inference/llama_inference.sh

55 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# llama.cpp 服务启动 + 推理任务脚本
# 用法: ./llama_inference.sh
set -e
# ==================== 配置区域 ====================
LLAMA_CMD="./llama-server -m /path/to/model.gguf --port 8080" # 启动命令
LLAMA_PORT="8080" # 服务端口
HEALTH_URL="http://localhost:${LLAMA_PORT}/health" # 健康检查地址
MAX_WAIT=300 # 最长等待秒数
# 推理任务(按顺序执行)
TASKS=(
'curl -s http://localhost:8080/completion -d "{\"prompt\": \"你好\", \"n_predict\": 50}"'
'curl -s http://localhost:8080/completion -d "{\"prompt\": \"测试\", \"n_predict\": 50}"'
)
# ==================== 启动服务 ====================
echo "[$(date '+%H:%M:%S')] 启动 llama.cpp 服务..."
$LLAMA_CMD &
LLAMA_PID=$!
echo "[$(date '+%H:%M:%S')] 服务 PID: $LLAMA_PID"
# ==================== 等待服务就绪 ====================
echo "[$(date '+%H:%M:%S')] 等待模型加载..."
WAITED=0
while ! curl -s "$HEALTH_URL" > /dev/null 2>&1; do
if [ $WAITED -ge $MAX_WAIT ]; then
echo "[$(date '+%H:%M:%S')] ❌ 等待超时,服务未就绪"
kill $LLAMA_PID 2>/dev/null || true
exit 1
fi
sleep 2
WAITED=$((WAITED + 2))
echo "[$(date '+%H:%M:%S')] 已等待 ${WAITED}s..."
done
echo "[$(date '+%H:%M:%S')] ✅ 服务已就绪"
# ==================== 执行推理任务 ====================
echo "[$(date '+%H:%M:%S')] 开始执行推理任务..."
TASK_NUM=1
for TASK in "${TASKS[@]}"; do
echo "[$(date '+%H:%M:%S')] --- 任务 $TASK_NUM ---"
eval "$TASK"
echo ""
TASK_NUM=$((TASK_NUM + 1))
done
# ==================== 清理(可选)====================
# 如果任务执行完要关闭服务,取消下面注释
# echo "[$(date '+%H:%M:%S')] 关闭服务..."
# kill $LLAMA_PID
echo "[$(date '+%H:%M:%S')] ✅ 全部完成"