- 博客(51)
- 资源 (2)
- 收藏
- 关注
原创 ASan内存错误检测工具使用
✅ 什么是 AddressSanitizer(ASan)?AddressSanitizer(ASan) 是 GCC 和 Clang 提供的一种快速内存错误检测工具,可检测:堆/栈/全局变量的 缓冲区溢出(buffer overflow)释放后使用(use-after-free)重复释放(double free)内存泄漏(需额外开启)返回栈地址(return-stack-address) 等。
2025-11-24 11:34:08
707
原创 打印输出一个动态库的依赖库所使用的gcc版本
for lib in $(readelf -d libabc.so.1.0.0 | grep NEEDED | awk -F'[][]' '{print $2}'); do echo "=== Checking: $lib ===" find ../../ -name "$lib" -type f -exec sh -c ' echo ">>> $1" readelf -p .comment "$1" 2>/dev/null | grep "GCC:" ' _ {} \; echo "" done
2025-11-13 10:42:03
93
原创 docker部署的PostgresSQL其他机器访问端口不通
在一台服务器上起了PostgresSQL的容器,然后在这个宿主机上telnet 5432通,但是其他机器上不通。同一台宿主机上的其他容器映射的端口在其他机器上也是telnet通的。原因可能是:Docker 的。解决方案:重启docker。
2025-10-10 13:12:02
241
原创 Flowise 本地部署文档及 MCP 使用说明
Flowise 是一个开源的拖放式 UI 工具,用于构建自定义的 LLM 工作流程。它允许用户通过可视化界面连接不同的 AI 组件,无需编写代码即可创建复杂的 AI 应用。
2025-06-03 16:24:48
499
原创 基于 dGPU部署NanoDB,实现基于clip和faiss-gpu的高性能多模态检索
当前是基于Jetson实现的,并没有在dGPU上部署的说明。为此, 参考上述的项目实现了在dGPU的NanoDB的部署,如T4。下面是具体的部署过程。整个部署使用docker实现,因为涉及依赖库较多,普通的物理机部署较为复杂。
2024-12-12 16:36:40
456
原创 基于Cursor + Ollama + Qwen2.5-coder搭建本地编码助手
为了能够实现整个搭建过程,首先需要准备大模型服务,并且使用本地部署大模型实现本地的编码助手。
2024-11-12 17:16:33
12453
5
原创 Qwen大模型手动部署Ollama
如果编译llama.cpp的测试工具main,在llama.cpp目录执行make -j,会在当前目录生成main文件。1> 将qwen的huggingface safetensors转为llama.cpp的二进制文件。若重新生成,需先删除之前的converted.bin,否则报错。2> 测试转换的模型是否能正常运行。安装llama.cpp依赖。
2024-10-16 14:12:12
696
原创 LLaVA多模态大模型环境搭建
LLaVA 的早期实验表明,它展示出令人印象深刻的多模型聊天能力,有时会表现出多模型 GPT-4 在未见过的图像/指令上的行为,并在合成多模型指令遵循数据集上获得与 GPT-4 相比 85.1% 的相对分数。总之,LLaVA 的主要功能和特点是通过使用机器生成的指令遵循数据对大型语言模型进行指令调整,以提高新任务的零射击能力,并在多模态领域展示出令人印象深刻的聊天能力。设置为较低的值时,预测词的概率会变尖锐,这意味着选择最有可能的词的概率更高。可以分析图像,描述图像,进行物体识别,分析理解场景。
2024-10-15 15:57:26
500
原创 Grounded-SAM Demo部署搭建
(5)inpainting:通过结合Grounding DINO + Segment Anything + Stable Diffusion实现文本交换并替换目标对象(需要指定文本提示和inpaint提示)。(6)automatic:通过结合BLIP + Grounding DINO + Segment Anything实现非交互式检测+分割(无需指定提示)。(4)seg:通过结合Grounding DINO和Segment Anything实现文本交互,实现检测+分割(需要指定文本提示)。
2024-10-12 17:13:12
1152
原创 基于AutoGen+Ollama+Litellm构建知识库问答系统
之前已经。但是随着智能体的发展,基于智能体构建知识库问答系统逐渐成为主流。下面就以多智能体框架AutoGen、托管大型语言模型的平台Ollama、模型选择和切换工具Litellm为基础构建一个多智能体的知识库问答系统。同时搭建一个多智能体对话系统。
2024-10-12 16:05:27
800
原创 基于大模型LLama2+Langchain构建知识库问答系统
知识库需求在各行各业中普遍存在,例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。传统知识库搜索系统基于关键字匹配,缺少对用户问题理解和答案二次处理能力。为保证推荐系统的实效性和准确性,需要大量的数据/算法/软件工程师的人力投入和包括硬件在内的物力投入。其次,为了进一步提高搜索准确率,如何引导用户搜索描述更加准确和充分利用用户行为优化搜索引擎也是常见的用户痛点。此外,如何根据企业知识库直接给出用户提问的答案也是众多企业中会遇见的技术瓶颈。
2024-10-11 19:43:49
1765
2
原创 如何基于pycharm调试open-webui的backend
由于使用了uvicorn异步web服务,因此不能直接创建python类型的Debug Configurations,而需要创建一个FastAPI类型的Debug Configurations。点击保存后,即可类似python脚本进行正常调试。注意,可能还需要其他的环境变量需要设置。上述完成整个环境配置,接下来开始配置调试工程。
2024-04-10 17:34:03
1358
3
原创 一维数组映射为上三角阵实现
运行以下命令,即可生成一个上三角阵,其中5表示生成上三角阵的维度为5, 3表示将数组A的下标3对应的上三角阵的坐标标记出来,用于验证准确性。另外,第二个参数(3)不能大于n(n+1)/2,其中n为上三角阵的维度。以上是包含对角线的上三角阵的生成方式。
2023-12-25 16:34:27
591
原创 std::shared_ptr如何释放管理权限并且不销毁管理的裸指针的资源
std::shared_ptr是一个智能指针,它会自动管理其指向的对象的生命周期。当std::shared_ptr的引用计数变为0时,它会自动删除其管理的对象。因此,通常情况下,我们不能让std::shared_ptr释放其管理的对象但不删除该对象。请注意,这种做法可能会导致内存泄漏,因为你需要手动删除p来释放内存。在这个例子中,当ptr的引用计数变为0时,它不会删除其管理的int(10),因为我们提供了一个什么都不做的删除器。然而,如果你确实需要这样做,你可以使用一个自定义的删除器。
2023-09-22 10:54:46
774
原创 C/C++ 静态变量初始化顺序的不确定性导致崩溃
但是如果还使用sg_map的定义放到函数register中作为局部变量使用就不会有这样的问题,原因是sg_map是一个局部静态变量,它在A::register函数中被定义。如果B::a的初始化过程早于sg_map,那么当调用register时,sg_map还未初始化,这时如何对sg_map进行insert操作就会产生崩溃,也就是segment fault错误。由于静态变量初始化顺序的不确定性导致的。如果使用静态变量,并且在不同的编译单元中有不同的静态变量,最好不要使用全局静态变量,而是使用局部静态变量。
2023-09-19 16:20:07
635
原创 如何使用GitHub Desktop在PR时只提交某个commit
先切换回主分支main(提交commit的分支),然后选择要合并到上游仓库的commit,然后右键选择cherry-pick即可完成本地合并到新创建的分支。查看我们仓库的远端是否是我们自己fork的仓库地址,这里不能是上游仓库,因为我们可能没有权限。push完成分支之后我们既可以在github.com的fork的仓库里看到新创建的分支。使用github的时候,有时我们在自己fork的仓库修改后需要PR合并到上游仓库。这时会弹出此commit要提交到的分支,选择刚创建的分支即可。3. push新创建的分支。
2023-08-23 17:13:54
909
原创 解决pycharm报Cannot find remote credentials for target config com.jetbrains.plugins.remotesdk.target的方法
最后将工程目录下的.idea目录删除,然后重新创建工程。再将之前的解释器全部删除,重新创建即解决了这个问题。使用的是ssh方式,解释器使用的是conda里的自定义的python。后来,尝试了几种方法,都没法解决,比如删了解释器重新添加等。
2023-08-16 14:52:08
5386
1
原创 基于FFmpeg + CV-CUDA实现高性能硬件解码与硬件预处理操作 —— YUV420SP(NV12) => BRG24 零拷贝高性能
基于FFmpeg + CV-CUDA实现高性能硬件解码与硬件预处理操作 ,实现YUV420SP(NV12) => BRG24,零拷贝高性能。
2023-08-04 11:12:47
926
原创 ModelArts中使用自定义镜像部署在线服务时,基于Dockerfile中的CMD命令启动容器,容器会自动退出的解决办法
ModelArts中使用自定义镜像部署在线服务时,基于Dockerfile中的CMD命令启动容器,容器会自动退出的解决办法。
2023-02-09 16:18:34
676
原创 RV1808/1126使用RKNN作为MediaPipe推理后端开发步骤及ONNX转RKNN模型
目录1 基于RKNN推理后端集成1.1 依赖库配置1.2 添加计算单元Calculators1.3 增加rknn后端调用接口1.4 增加计算图1.5 增加动态库生成规则1.6 编译1.7 运行配置1.7.1 基于opencv的resize配置1.7.2 基于rag的resize配置2 RKNN模型转换1 基于RKNN推理后端集成RKNN SDK为RK1808等带有NPU 的平台提供编程接口...
2022-05-30 20:38:37
2861
5
原创 瑞芯微平台(RV1126)基于轻量级推理框架TengineInferpipe实现tengine后端的NPU部署应用
TengineInferpipe的简介参考TengineInferPipe在Jetson平台基于TensorRT后端Demo实现_space01的博客-优快云博客。瑞芯微平台(RV1126)建议使用docker环境交叉编译TengineInferPipe,首先需要安装docker,并启动docker服务。1. 拷贝tengine动态库通过交叉编译工具编译的tengine库拷贝到TengineInferPipe的目录下。tengine的交叉编译方法参考RV1126编译tengine_陈.
2022-05-16 14:48:47
1196
原创 TengineInferPipe在Jetson平台基于TensorRT后端Demo实现
1.TengineInferPipe简介TengineInferPipe 是由 OPEN AI LAB 基于mediapipe框架进行改进、迭代的一套低代码、模块化的算法落地框架。通过解析部署配置文件,构建整个部署流程。可以用于快速构建算法部署sdk,以及可以作为一些可视化部署方案的中间层。其基本数据流程图如下图所示。2. 基于TensorRT后端Demo实现2.1 环境需求1)bazel >= 3.7 参考 bazel安装说明 安装bazel到系统中,或者下载对..
2022-05-16 14:20:42
396
原创 Jetson平台编译Tengine
1. Tengine简介Tengine于2017年在GitHub( https://github.com/OAID/Tengine )开源,是OPEN AI LAB(开放智能)推出的自主知识产权的边缘AI计算框架,致力于解决AIoT产业链碎片化问题,加速AI产业化落地。Tengine兼容多种操作系统和深度学习算法框架,简化和加速面向场景的AI算法在嵌入式边缘设备上快速迁移,以及实际应用部署落地,可以十倍提升基础开发的效率。Tengine一方面可以通过异构计算技术同时调用CPU、GPU、DSP
2022-05-16 13:25:44
685
原创 ByteTrack Demo搭建
ByteTack的Demo基于docker搭建。步骤如下:1. 下载ByteTrack源码git clone https://github.com/ifzhang/ByteTrack.git2.docker镜像准备cd ByteTrack && \docker build -t bytetrack:latest 3. 模型准备这里使用已经训练好的模型bytetrack_s_mot17.pth.tar,下载地址为bytetrack_s_mot17[goo..
2022-05-15 13:17:26
1511
原创 Triton服务器部署Yolov5s模型应用
目录1. Triton介绍2.Yolov5s模型部署2.1Triton服务端部署2.2Triton客户端部署1. Triton介绍NVIDIA Triton推理服务器是NVIDIA推出的开源推理框架,主要为用户提供在云和边缘推理上部署的解决方案。NVIDIA Triton 推理服务器 具有以下的特性:支持多种开源框架的部署,包括TensorFlow/PyTorch/ONNX Runtime/TensorRT 等,同时也支持用户提供自定义的服务后端(back...
2022-05-15 13:09:28
1558
2
原创 Jetson查看SM单元信息命令,包括threads per block, shared memory per block等
1. 在Jetson平台,使用以下命令搜索deviceQuery命令find / -name "deviceQuery"2. 使用bin/目录下的deviceQuery命令运行。/usr/local/cuda-10.2/samples/bin/aarch64/linux/release/deviceQuery
2022-05-14 21:21:13
369
原创 CUDA性能优化技巧
1.使用shared memory如果在kernel函数中,需要对global memory同一个数据多次访问,最好使用shared memory,先将数据从globalmemory拷贝到shared memory中,然后使用shared memory中数据进行读取。如果仅读取一次,则使用shared memory效果不大。2.使用限定符__restrict__提高性能对于read-only的指针,可以使用const * __restrict__进行限定,提高性能,如下面的ker..
2022-05-14 21:08:29
1404
原创 caffe升级到cuda10.2 + cudnn 8方法
将caffe的环境升级到cuda10.2 + cudnn8时,需进行下列修改,否则无法完成编译。1)include/caffe/util/device_alternate.hpp 将头文件#include <driver_types.h>放置在前面,如下:#include <driver_types.h> // cuda driver types#include <cublas_v2.h>#include <cuda.h>#...
2022-05-14 21:06:48
586
原创 调用CUDA kernel函数后,报错“invalid configuration argument”
调用CUDA kernel函数后,报错“invalid configuration argument”排查方法:1)使用cudaGetLastError()确定是哪个kernel函数导致的。2)检查kernel<<<GridDim,BlockDim>>>();其中,grid dim在前,block dim在后。注意:调用CUDA kernel函数,如果有指针,必须所有的指针都能够被GPU访问。...
2022-05-14 21:00:46
5401
原创 TensorRT使用自定义Plugin注意
1. plugin中的enque的inputs、outpus解释 int RefineDetectorLayerPlugin::enqueue(int batchSize, const void* const* inputs, void** outputs, void* workspace, cudaStream_t stream);inputs和outputs是一个数组,数组的内存储的是每一个输入或输出层的NCHW信息。如果refinedet层,inputs有8个输入,则inputs是一..
2022-05-14 20:53:31
370
原创 docker环境安装deepstream
1. 拉取镜像:dockerpullnvcr.io/nvidia/deepstream:5.1-21.02-samples2. deepstream实时预览xhost +如果需要显示,xhost +必须在创建docker实例之前执行一次,之后每次start docker之前都需要执行xhost +3. 启动a)指定gpudocker run --gpus '"'device=0'"' -it -p 2022:22 -v $PWD:/opt/nvidia/shar...
2022-05-14 20:45:00
1084
原创 Jetson设置固定IP和DNS方法
打开/etc/network/interfaces文件:# interfaces(5) file used by ifup(8) and ifdown(8)# Include files from /etc/network/interfaces.d:source-directory /etc/network/interfaces.dsource interfaces.d/eth0然后在/etc/network/interfaces.d目录下创建eth0文件,eth0文件内容如下
2022-05-14 12:30:01
1883
原创 nvjmi解码流程
nvjmi解码流程时序图如下图所示。解码主要包括两部分,一是发送待解码的数据块到output plane,二是从capture plane接收解码后的图像数据。在开始解码之前,首先需要对output plane和capture plane分别进行配置。output plane配置先与capture plane配置。1)output plane:将缓存空间加入到buf队列中,用于编码块的数据缓存。2)capture plane:将缓存空间加入到buf队列中,用于解码后的数据缓存。.
2022-05-14 12:13:36
798
原创 TensorRT - 推动AI落地的利器:性能加速与部署应用
1. TensorRT是什么?在介绍TensorRT之前,先介绍一下GPU、CUDA和cuDNN。GPU具有强大的并行计算能力,尤其对于简单的大量的计算,如矩阵计算等,这与其固有的体系结构设计有关。1.1 GPU体系结构GPU采用了一种被称为SIMT的体系结构,也就是相对于CPU中的SIMD的概念。SIMT就是Single Instruction Multiple Threads,也就是一条指令多个线程同时执行,但是与SIMD有所不同的是SIMT同时执行的每个线程是可以有不同分支的。GPU这
2022-05-13 11:43:58
487
原创 nvjmi: Jetson视频解码性能优化
目录1 nvjmi介绍2 nvjmi基于Jetson硬件性能优化2.1硬件解码2.2 Transform2.3 颜色空间转换1 nvjmi介绍nvjmi是一基于Jetson Multimedia API的解码库,功能说明参见基于Jetson Multimedia API的解码库_space01的博客-优快云博客。2 nvjmi基于Jetson硬件性能优化Jetson平台提供了一套Multimedia API用于硬件编解码以及图像缩放、裁剪、旋转等图像...
2022-05-13 09:36:35
1081
Iconxp3.1 图标制作软件
2012-04-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅