LOADING

加载过慢请开启缓存 浏览器默认开启

冰镇豆浆的博客

780M核显(7840HS)通过llama.cpp部署QwQ-32b

780M核显(7840HS)通过llama.cpp部署QwQ-32b

统一测试prompt

帮我写一份stable diffusion正向提示词,描绘一个汉服美女

测试模型

qwq-32b-q4_k_m.gguf

测试平台

  • Windows 11 专业工作站版 24H2
  • AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
  • 2*24G ddr5 5600mhz,合计48GB,BIOS中分配了8GB给核显

测试过程

vulkan

构建版本

llama-b4837-bin-win-vulkan-x64

构建步骤

直接下载官方上传的github releases构建:

https://github.com/ggml-org/llama.cpp/releases/download/b4837/llama-b4837-bin-win-vulkan-x64.zip

运行命令

llama-server -m "C:\AI\models\qwq-32b-q4_k_m.gguf" --port 8080 --host 0.0.0.0 -ngl 999

测试结果

  • 推理速度
prompt eval time =    1838.24 ms /    23 tokens (   79.92 ms per token,    12.51 tokens per second)
       eval time =  383019.23 ms /  1259 tokens (  304.22 ms per token,     3.29 tokens per second)
      total time =  384857.47 ms /  1282 tokens
  • 内存占用
load_tensors: offloading 64 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 65/65 layers to GPU
load_tensors:      Vulkan0 model buffer size = 18508.35 MiB
load_tensors:   CPU_Mapped model buffer size =   417.66 MiB

虽然显示占用内存为18508.35 MiB,但任务管理器显示专用GPU内存占用7.6GB/8.0GB,共享GPU内存占用13.7/19,9GB,内存占用37.5/39.8GB(含系统占用),总计占用似乎略高于hip。

  • 硬件占用率

核显约99%,CPU几乎无占用。

hip

构建版本

自行根据源代码构建:msvc,rocm for gfx1103

构建步骤

1.

cmake -S . -B build -G Ninja -DAMDGPU_TARGETS=gfx1103 -DGGML_HIP=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DGGML_RPC=ON

2.

cmake --build build

运行命令

  1. 首先尝试-ngl 64
llama-server -m "C:\AI\models\qwq-32b-q4_k_m.gguf" --port 8080 --host 0.0.0.0 -ngl 64

出现报错:

ggml_backend_cuda_buffer_type_alloc_buffer: allocating 17899.25 MiB on device 0: cudaMalloc failed: out of memory
  1. 尝试-ngl 54
llama-server -m "C:\AI\models\qwq-32b-q4_k_m.gguf" --port 8080 --host 0.0.0.0 -ngl 54

可以正常加载模型

测试结果

  • 推理速度
prompt eval time =    1173.13 ms /    23 tokens (   51.01 ms per token,    19.61 tokens per second)
       eval time =  294617.95 ms /   801 tokens (  367.81 ms per token,     2.72 tokens per second)
      total time =  295791.07 ms /   824 tokens
  • 内存占用
load_tensors: offloading 54 repeating layers to GPU
load_tensors: offloaded 54/65 layers to GPU
load_tensors:        ROCm0 model buffer size = 14994.21 MiB
load_tensors:   CPU_Mapped model buffer size = 18926.01 MiB

专用+共享GPU内存约14.6G,内存占用约18.5G,合计约33.1G。

  • 硬件占用率
    核显约80%,CPU约50%(含系统占用)。

其他构建

还测试过avx2构建,内存占用显著降低(约21G左右),CPU占用60%左右,速度接近hip。非准确数据但大差不差,不再赘述。

总结

  1. 对于7840HS,更推荐使用vulkan构建,可以充分利用核显性能;
  2. 没有必要折腾rocm,内存占用高且对比cpu几乎没有推理速度优势,不如直接使用cpu部署。
  3. 本次测试仅针对qwq-32b-q4_k_m.gguf模型,其他模型测试结果可能不同。
阅读全文

nvm-windows安装教程

web前端 2024/12/28

使用 nvm-windows 管理和切换本地 Node.js 版本

在开发过程中,可能会遇到需要安装和切换多个不同版本的 Node.js 的需求。nvm-windows 是一个用于 Windows 平台的 Node.js 版本管理工具,可帮助我们方便地安装和切换 Node.js 版本。以下是详细的安装与使用教程:

1. 下载最新版构建

首先,前往 GitHub 仓库 nvm-windows Releases 页面,下载最新的压缩包版本 nvm-noinstall.zip

  1. 点击你需要的版本(通常选择最新版)。
  2. 下载 nvm-noinstall.zip 文件到本地。
  3. 解压压缩文件到一个你希望作为 nvm 主目录的路径,例如:D:\devProgram\nvm

2. 设置环境变量

为了能够全局使用 nvm 和 Node.js 命令,我们需要设置相应的环境变量。步骤如下:

  1. 打开环境变量设置

    • 右键 “此电脑” 或 “我的电脑”,选择“属性”。
    • 点击左侧的“高级系统设置”。
    • 在“系统属性”窗口中的“高级”选项卡,点击“环境变量”。
  2. 新增环境变量

    • 添加 NVM_HOME,值为解压后的 nvm 主路径,例如:D:\devProgram\nvm
    • 添加 NVM_SYMLINK,值为你希望存放 Node.js 安装文件的路径,例如:D:\devProgram\nodejs
  3. 修改 PATH 变量

    • 选中用户变量或系统变量中的 Path,点击“编辑”。
    • 追加以下两条内容:
      %NVM_HOME%
      %NVM_SYMLINK%
      
    • 点击“确定”保存设置。

注意
NVM_HOMEnvm 主程序路径,而 NVM_SYMLINK 用于存放实际 Node.js 文件并作为全局的 Node.js 使用路径。

3. 在 nvm 主路径下新建 settings.txt

nvm 的配置依赖一个名为 settings.txt 的文件。我们需要在 nvm 主路径下创建该文件并添加以下内容:

root: D:\devProgram\nvm
path: D:\devProgram\nodejs
  • root 对应解压出 nvm 的根目录路径。
  • path 对应 Node.js 安装文件的目录路径(即 NVM_SYMLINK 的值)。

确保路径与环境变量完全一致,保存文件后关闭。

4. 查看可安装的 Node.js 版本

在命令行中,通过 nvm list available 来查看所有可以安装的 Node.js 版本。这些版本会按照长期支持版(LTS)和当前最新版本的顺序列出,例如:

nvm list available

        18.17.1   (LTS: Hydrogen)
        20.6.0    (Latest)
        16.20.3   (LTS: Gallium)

选择一个你需要的版本进行安装。

5. 安装指定版本的 Node.js

使用 nvm install 版本号 命令安装指定的 Node.js 版本。例如,我们想安装 16.20.3

nvm install 16.20.3

安装成功后,你可以通过 nvm list 查看已安装的版本。

6. 切换 Node.js 版本

安装完成后,你可以通过 nvm use 版本号 命令切换到指定的版本。例如,切换到刚刚安装好的 16.20.3

nvm use 16.20.3

命令执行成功后,当前 Node.js 版本将被激活。你可以通过以下命令检查是否切换成功:

node -v

命令输出对应的版本号表示切换成功。

7. 查看已安装的 Node.js 版本

如需查看当前安装的所有 Node.js 版本,可以使用以下命令:

nvm list

输出示例:

    16.20.3
  * 18.17.1 (Currently using 18.17.1)
    20.6.0

带有 * 标记和 Currently using 的版本是当前正在使用的版本。

8. 版本切换小结

你可以随时通过 nvm use 版本号 来切换不同的 Node.js 版本,而无需手动卸载或重新安装 Node.js。这对于不同项目需要依赖不同的 Node.js 版本时,非常方便。


总结

通过以上步骤,你已经成功安装并配置了 nvm-windows,并学会如何通过它管理和切换本地的 Node.js 版本。以下是使用 nvm 的几个常用命令:

  • 查看可安装版本:nvm list available
  • 安装指定版本:nvm install 版本号
  • 查看已安装版本:nvm list
  • 切换版本:nvm use 版本号

希望这篇教程能够帮助你快速上手 nvm-windows,愉快地管理你的 Node.js 环境!

阅读全文

开源项目介绍:century_avenue

Century_Avenue

一个将商业或开源大语言模型的api映射为OpenAI风格的api的工具,名称取自上海换乘客流最大地铁站“世纪大道”。

特征

  • 1、目前支持智谱清言GLM4系列、讯飞星火Lite、讯飞星火Pro、讯飞星火3.5Max、讯飞星火4.0Ultra、千问Long、百度Ernie系列
  • 2、目前(仅)支持/v1/chat/completions/v1/models接口
  • 3、支持上述两个接口向指定url的转发

用法

通过Releases使用(推荐)

0、前提条件:

  • Jdk21
  • JAVA_HOME及Path环境变量配置

1、从Releases页面下载最新版jar构建;

2、application.yaml配置文件示例:(请注意,以下参数均为非必填项,但构建内默认配置文件中不包含任何api对接参数,直接运行是无法调用任何一种大模型的哦!)

# 开启鉴权,请求头中需添加Authorization,规则与OpenAI一致,内容为"Bearer "+api-key
# 不配置此项则不检验授权,但我们强烈推荐开启
api-key: "my api-key"
# 向任意符合OpenAI API风格的大模型转发请求
# 注意:由于Uvicorn对h2和h2c的支持存在问题,本地部署的使用了fastapi的大模型建议通过Hypercorn运行,否则可能导致非流式请求报错
# 2.0.0及以上版本只会在baseUrl后补上/chat/completions,2.0.0以下版本会补上/v1/chat/completions
openai:
  models:
    - apiKey: "my key"
      model: "my model"
      baseUrl: "https://api.openai.com/v1"
    - apiKey: "my key"
      model: "my model"
      baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1"
# 智谱清言GLM4
glm-4:
  api-key: "glm-4 api-key"
  subModels:
    - "glm-4-air"
    - "glm-4-airx"
    # 等等
# 讯飞星火lite
spark-lite:
  app_id: "spark-lite app_id"
  api-secret: "spark-lite api-secret"
  api-key: "spark-lite api-key"
# 讯飞星火pro
spark-pro:
  app_id: "spark-pro app_id"
  api-secret: "spark-pro api-secret"
  api-key: "spark-pro api-key"
# 讯飞星火3.5 Max
spark35-max:
  app_id: "spark35-max app_id"
  api-secret: "spark35-max api-secret"
  api-key: "spark35-max api-key"
# 讯飞星火4.0 Ultra
spark4-ultra:
  app_id: "spark4-ultra app_id"
  api-secret: "spark4-ultra api-secret"
  api-key: "spark4-ultra api-key"
# 阿里巴巴Qwen-Long
qwen-long:
  api-key: "qwen-long api-key"
# 百度ERNIE-Tiny-8K
ernie-tiny-8k:
  api-key: "ernie-tiny-8k api-key"
  secret-key: "ernie-tiny-8k secret-key"
# 百度ERNIE-Lite-8K-0308
ernie-lite-8k:
  api-key: "ernie-lite-8k api-key"
  secret-key: "ernie-lite-8k secret-key"
# 百度ERNIE-Speed-8K
ernie-speed:
  api-key: "ernie-speed api-key"
  secret-key: "ernie-speed secret-key"
# 百度ERNIE-Speed-128K
ernie-speed-128k:
  api-key: "ernie-speed-128k api-key"
  secret-key: "ernie-speed-128k secret-key"
# 百度ERNIE-3.5-8K-Preview
ernie-3.5-8k-preview:
  api-key: "ernie-3.5-8k-preview api-key"
  secret-key: "ernie-3.5-8k-preview secret-key"
# 百度ERNIE-4.0-8K-Preview
ernie-4.0-8k-preview:
  api-key: "ernie-4.0-8k-preview api-key"
  secret-key: "ernie-4.0-8k-preview secret-key"
# 大模型别名映射,可以配置多个,可以多个别名指向同一个可用的大模型,所有可用的模型及其对应的别名都会显示在/v1/models中
century-avenue:
  model-mapping:
    gpt3.5: "spark-lite"
    gpt4: "spark-lite"
    gpt4o: "spark-pro"

3、执行java -jar命令

java -jar century_avenue-0.0.1-SNAPSHOT.jar --spring.config.import=file:/path/to/application.yaml

注意将jar名称修改为你下载的构建的名称;

4、访问 http://localhost:4523/v1/models ,即可看到当前支持的大模型列表 (注意:仅有配置了全部对接参数的大模型才会显示在模型列表中)

从源代码构建

0、前提条件:

  • Jdk21
  • Maven
  • JAVA_HOME及Path环境变量配置

1、

git clone https://github.com/FuturePrayer/century_avenue.git

2、

cd century_avenue

3、

mvn package

局限性

  • 1、当前支持的大模型较少,本人精力、财力有限,无法购买每一款商业大模型或运行每一款开源大模型用来做适配,故欢迎各位大佬们参与贡献;
  • 2、当前暂不支持函数调用。

参与贡献

  • 1、开源大模型的实现类请放置到cn.miketsu.century_avenue.service.open包中,商业闭源大模型请放置到cn.miketsu.century_avenue.service.closed包中;
  • 2、代码合并需提供完整测试报告,格式不限,但内容需要包括流式调用、非流式调用、配置了对接参数的情况下模型列表接口的返回以及未配置时是否可用。

鸣谢

阅读全文

Hello World

2024/12/25

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

$ hexo new "My New Post"

More info: Writing

Run server

$ hexo server

More info: Server

Generate static files

$ hexo generate

More info: Generating

Deploy to remote sites

$ hexo deploy

More info: Deployment

阅读全文
1
avatar
Miketsu

Description