递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 296|回复: 4
打印 上一主题 下一主题

[视窗] 纯源码基于c++ 和qt界面 本地电脑部署及永久免费使用AI大....

[复制链接]

2

主题

7

帖子

28

积分

新手上路

Rank: 1

积分
28
跳转到指定楼层
楼主
发表于 前天 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
夸克网盘
pan点quark点cn/s/60121f2045ca(因为限制 自行把点替换.)
纯源码 基于c++ 和qt界面 本地电脑部署大模型
**4GB 显存/内存环境完美运行**:

与本地电脑部署大模型通信的 3 种真实方式(本项目采用方法2 内存映射 断网也可使用 无需任何费用 无限使用)
1. 标准输入输出流(stdin/stdout)→ 最原生、最高效
不联网、不走 HTTP、直接进程间管道通信。
工作方式:
- 启动一个模型推理程序( main.exe ,  llama.cpp )
- 外部程序通过 子进程管道 往它的 stdin 发问题
- 模型把生成的文字逐 token 写到 stdout
- 外部程序实时读 stdout 流式输出


2. 共享内存 / 内存映射(高级用法)
- 模型加载到内存
- 其他进程直接读写内存区域
- 速度极快,但平台绑定强、复杂
- 一般用于 C/C++ 嵌入,


3. HTTP / WebSocket(最通用)
就是 Ollama、vLLM、llama.cpp server 那种。
把流包装成 HTTP JSON 或 SSE 流。


因为推理参数很难调 导致回复 有很多缺点 例如循环问题等 特殊符号问题等 详细见llamaworker.cpp 问了很多ai辅助也没调试好  有经验的自行修改llamaworker.cpp(或使用ai辅助)有大佬能帮完善发来一份最好了 以下是llamaworker.cpp源码中推理参数

核心功能 :
- 重复检测机制,避免生成重复内容
- 高级采样策略(温度采样 + Top-k + Top-p)
- 合理的生成参数设置
- 默认参数 :

- 温度:0.7
- Top-k:40
- Top-p:0.9
- 重复惩罚:1.1
- 生成 token 数量:512



回复

使用道具 举报

2

主题

7

帖子

28

积分

新手上路

Rank: 1

积分
28
沙发
 楼主| 发表于 前天 16:54 | 只看该作者
重要补充(否则构建项目失败)
d盘新建文件夹TraeTemp
把整个MyGGUFv2文件夹拖出到电脑d盘TraeTemp文件夹下即可 模型 静态库已在源码使用绝对路径 f需要放其它磁盘的自己修改源码
回复

使用道具 举报

109

主题

643

帖子

4751

积分

论坛元老

Rank: 8Rank: 8

积分
4751
板凳
发表于 前天 17:51 | 只看该作者
看上去很高级!
回复

使用道具 举报

326

主题

1005

帖子

3900

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3900
QQ
地板
发表于 昨天 10:02 | 只看该作者
有没有火山GO上的方式呢
回复

使用道具 举报

2

主题

7

帖子

28

积分

新手上路

Rank: 1

积分
28
5#
 楼主| 发表于 昨天 12:14 | 只看该作者
唐兀 发表于 2026-3-23 10:02
有没有火山GO上的方式呢

其实理解大模型如何被外部程序调用原理 你自己应该会写程序 无论什么语言都有变通的方法(道理懂了可以指挥AI帮你写)
“大模型如何被外部程序调用”,大致可以归纳如下
1模型文件 = 参数(数字)+ 结构描述(或代码)
2加载 = 在 GPU/CPU 内存中实例化模型结构并填入参数
3推理 = 输入 token 序列,利用参数执行前向计算,输出下一个 token(或完整响应)
4通信 = 外部程序通过进程内函数调用或网络 API(HTTP/gRPC) 将输入传递给模型进程,并接收结果

下面详细解释一下
加载 = 在 GPU/CPU 内存中实例化模型结构并填入参数
例如llama.cpp 读取 GGUF 模型文件,解析元数据确定网络结构,分配内存,加载张量,然后即可用llama.cpp 代码中内置的推理函数执行。
通过加载模型实例化模型结构后会得到结构体指针(Python 对象的概念,逻辑类似实例化对象)。结构体指针就是模型在内存中的运行时表示,它的主要作用是封装参数和计算逻辑,对外提供统一的推理接口。不同框架/库的实现方式略有不同,但本质相似:

例如 在 llama.cpp 中
llama.cpp 是 C++ 实现,没有 Python 对象的概念,但逻辑类似:
加载 GGUF模型 文件后,你会得到一个 llama_model 结构体指针和一个 llama_context 结构体指针。
它们可以看作是“对象”的 C 语言版本。
llama_model:包含模型的所有参数(权重)、结构元数据(层数、头数等)。
llama_context:包含推理时的运行时状态(如 KV 缓存、当前上下文长度等)。
这些“对象”有什么用?
调用 llama_decode() 或 llama_eval() 时,需要传入 llama_context,它会使用 llama_model 中的参数执行计算。
管理推理状态:比如维护 KV 缓存,记录已处理的 token 数量,支持多轮对话等。
提供采样接口:llama_sample_top_p 等函数基于当前 logits 选择下一个 token。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2026-3-24 11:51 , Processed in 0.081731 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表