blueyi's notes

Follow Excellence,Success will chase you!

一份面向AI 基础设施全栈知识体系学习指南,涵盖从算力、数据、训练、推理到 MLOps/LLMOps、RAG 与可观测性的完整技术栈,并融入当前主流实践与最新技术趋势。

Read more »

docker run应该是我们日常使用docker中最常用,也最重要的命令。
命令格式如下:

1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Read more »

由于种种原因我们可能无法正常连接到python的官方pip源,或者连接速度很慢,或者由于根证书的原因在安装包时会提示连接证书问题,可以通过修改pip的配置来修改为国内其他源,并信任相应的源,避免证书错误,提高包安装速度。

Read more »

记录Dockerfile的编写规则和用法

Dockerfile就是用于构建image的一系列命令和参数构成的脚本,通过docker build -t <image_name:tag> -f </path/to/Dockerfile> .来构建。

docker build命令从名为Dockerfile的文件和context来构建image,context是PATH(本地目录)或者URL(Git repository位置)处的文件。context会以递归方式处理,所以PATH的子目录和git的submodules都会处理,同样这里要小心用于作为PATH的目录最好不要有与镜像无关的文件,通常会新建一个空文件夹做为context的PATH。

PATH下的.dockerignore可以用于排除文件和目录。

构建工作由Docker守护进程运行,而不是docker的CLI,其中-t参数用于指定镜像的repository和tag,可以有多个-t-f指定Dockerfile的路径,最后的.表示上下文件环境为当前目录。

例如:

1
docker build -t blueyi/python-3.6:dev -f ~/docker/Dockerfile .
Read more »

在一个系统较老的centos(6.9)上编译安装gcc4.8.5,系统源里面带的是4.7.2,对C++11中的特性支持不完整,所以需要手动编译一份新版本。
以为会很简单,直接下载源码,根据readme配置相关依赖源码,然而最后还是编译的时候报错,所以记录下来。

Read more »

默认的GCC编译选项会编译出与系统一致的输出,例如64位直接使用gcc或g++编译出的为64位程序或库,而32位系统编译的是对应32位的。
可以通过在编译时添加选项-m32-m64来指定编译生成的相应版本,如果同时带上这2个选项,只有后一个会生效。
问题的关键时多数时候会提示缺少库,这里以64位下编译32位程序为例,给出ubuntu和centos下相关依赖包。

Read more »

当安装了VS之后再安装CUDA套件就可以通过VS创建基于CUDA的项目,但往往我们会需要让之前的老项目支持对CUDA的编译,以便使用CUDA对原有项目中的部分算法加速,网上有各种各样的尝试,搜索SOF之后找到一个超简单的方法,记录之。

Read more »

首先 Docker 是由 go 语言编写,基于 Linux 容器技术(LXC)、Namespace、Cgroup 和 UnionFS(联合文件系统)等技术的轻量级操作系统虚拟化解决方案。

对于 docker 的概念,可以简单理解如下:

  • 镜像(Image) 类似于虚拟机的快照,它是只读,可以以镜像为模板创建容器,在容器中的更改不会影响到原镜像。实际镜像是 UnionFS 的层级文件系统。
  • 容器(Container) 类似于轻量级的虚拟机,由 docker 镜像实例化而来,docker 推荐一个容器运行一个进程,可见其轻量程度。
  • 注册服务器(Registry) 提供在线存放 docker 镜像的在线服务,可以理解为 github 所提供的 repository 作用,当我们使用 docker run 运行一个本地不存在的镜像时,默认情况下 docker 会从 docker 官方的 registry 拉取该镜像,然后创建并运行一个容器。
  • Dockerfile 可以理解为用于构建镜像的命令和设置组合

本文将从安装开始,记录docker日常使用的一些命令、问题及深一点的理解

Read more »

YUV 数据格式概览

YUV 的原理是把亮度与色度分离,使用 Y、U、V 分别表示亮度,以及蓝色通道与亮度的差值和红色通道与亮度的差值。其中 Y 信号分量除了表示亮度 (luma) 信号外,还含有较多的绿色通道量,单纯的 Y 分量可以显示出完整的黑白图像。U、V 分量分别表示蓝 (blue)、红 (red) 分量信号,它们只含有色彩 (chrominance/color) 信息,所以 YUV 也称为 YCbCr,C 意思可以理解为 (component 或者 color)。

维基百科上的 RGB 转 YUV 的公式能更好的反应 YUV 与 RGB 的关系,以及为什么称为 YCbCr:

Y 中含有三元色色信息,且有较多的 G,所以他们一起可以显示出全彩的图像。
很显然我们可以想到是不是会有 YCgCb、YCgCr 等,针对不同的应用场景,也确实有相关应用研究。

如下图,一张从上到下分别为原图、Y、U 和 V:

采用 YUV 而不是使用 RGB,既有历史原因:为了兼容老式黑白电视,因为 YUV 如果只输出 Y 就成了黑白图像了。也有 YUV 自己的其他优点,例如可以根据需要,采用特定的 YUV 存储格式,以降低祼码流的空间占用。

Read more »

Windows 下的多线程中线程锁是通过CRITICAL_SECTION实现,用以保护用户数据,即当串行代码断执行到该部分时,操作系统将告知下一来执行到此处的线程等待,直到上一个线程离开被保护的代码断,从而通过将需要访问数据的部分放在该代码段来保护数据被多线程访问时的一致性。

Read more »
0%