Windows Configuration05 CUDA & Cudnn

Windows Configuration05 CUDA & Cudnn

在 Windows 和 WSL2 中安装 Cuda 和 Cudnn ,是配置 GPU 开发环境中重要的一步,其支撑了 AI 模型进行 Training 和 Interface 。本篇介绍安装 CUDA 和 Cudnn 的步骤和一些踩过的坑。

参考资料如下:版本查看 | Win 安装 Cuda 和cuDNN | WSL 2 安装 CUDA 和cuDNN

Win 11 安装 CUDA 和 cuDNN

CUDA

首先在 Nvidia 的控制面板:帮助-系统信息的如下位置,查看 GPU 最大支持的 CUDA 版本:

image.png

也可以使用 Nvidia-smi 命令在 Powershell 或者 CMD 中查看:

image.png

确定了版本之后到 Nvidia CUDA下载页面 下载指定版本的 CUDA 进行安装(根据安装指引进行)即可,安装位置等默认即可,其中有一些安装选项即是 Nvidia GeForce Experience 安装的内容。

安装完成后在 CMD 或者 PowerShell 确认是否安装完成(需要重启终端):

1
nvcc -V

image.png


AIGC01 Stable Diffusion and midjourney Setup

AIGC01 Stable Diffusion and midjourney Setup

This Chapter introduce how to set up stable diffusion and mid-journey, and record some problem I meet when I deploy it.

(Deprecated) midjourney

由于 midjourney 现需要付费使用,同时没有开源,因此我们讲一笔带过该部分内容,该部分内容大多转载于 超详细!AI 绘画神器 Midjourney 基础使用手册

midjourney 的安装步骤主要分成以下的几步:

  1. 点击 Join the Beta 注册账号,注册完会跳转到;
  2. Discord 首页,亲自创建自己的服务器,仅供我和我的朋友使用;
  3. 下载客户端,在默认对话界面讯在或开始新的对话,输入 Midjourney Bot,添加到服务器
  4. 付费开启体验。

(Deprecated) DreamStudio

说是可以本地部署,但是实际体验非常不好,应该只是部署了 Webui,然后调用官方提供的免费 API;所以有时候生成不出来,但是又不报错,不知道是不是使用姿势有问题,反正很屎。

  • https://github.com/Stability-AI/StableStudio
  • 装好 npm 和 yarn
  • 参考 quick start,git clone -> (cd) yarn 安装 -> yarn dev 部署在本地端口上。
  • 官网注册账号-> 获取 API -> 填入并在最上方转到 Generate 页面即可。

Stable Diffusion 部署专题

该部分作为 Intro,仅介绍 Stable Diffusion 的安装和部署,以及一些启用参数等,具体的使用在后面的文章进行进一步的讲解。

基于官方 REPOAUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (github.com)

这里介绍基于 windows 的安装和 WSL2 的安装部署过程。整体的安装可能会分成以下的几个步骤进行:(推荐在安装和部署之前,参考 [[WindowsCudaCudnn]] 一文,首先配置 CUDA,也可以遇到问题再部署)

  • 基础依赖和环境安装(python、CUDA)
  • Stable DIffusion 的 UI 界面和部分插件安装
  • 模型下载和加载

Grep、Sed、Awk 03 Awk

Grep、Sed、Awk 03 Awk

Linux 三剑客之 Awk (由三个创始人的姓氏首字母组成),相比于 Grep 和 Sed 而言更为特殊一些,它是一种模式匹配的编程语言,其主要的作用匹配文本进行处理,其擅长实现对文本的格式化输出,而作为一门编程语言:支持函数,变量,循环,运算,但相对简单。

AWK 的执行逻辑是:搜索文件的每一行,如果发现匹配内容,就执行下一个编程步骤,如果没发现,就继续处理下一行的内容。

Intro

由于 AWK 实际上是一个编程语言,本篇主要只介绍其命令行用法。

首先介绍 AWK 命令,其主要用于匹配文本并格式化输出,适用于对表格化的数据机型处理。其使用模板大致如下:

1
2
3
4
awk [options] 'program' var=value file...
awk [options] 'pattern {action1; action2; ...}' file ...
awk [options] -f programfile var=value file...
awk [options] 'BEGIN{ action;... } pattern{ action;... } END { action;... }' file ...
  • -f scriptfile: 从脚本文件中读取 awk 命令
  • -v var=value: 赋值一个用户定义变量,也可用这种方式修改内置变量
  • -F fs: fs 可为任意字符串或者正则表达式,用于指定分隔符(也可以通过-v 的方式修改内置的分隔符变量来实现)

每个 action 或者说 statement 之间用 分割

参考资料:AWK wikipedia | practical-programming-books/awk.md | 一. AWK入门指南 — AWK程序设计语言 | Linux文本三剑客超详细教程—-grep、sed、awk - alonghub


Grep、Sed、Awk 02 Sed

Grep、Sed、Awk 02 Sed

Linux 三剑客之 Sed,相比于擅长数据查找定位的 Grep,Sed(Stream Editor)擅长做的是数据修改,做的主要是做一些增删改的功能。 sed 和 awk 的区别是什么?

Intro

首先介绍 Sed 命令,Stream Editor 流编辑器,针对字符流来进行文件编辑,同样,其核心也在于正则匹配式,其用法如下:

1
sed [option] {script} [input-file]

其中{script}可以理解为三者的组合:sed 动作指令+Reg 用正则&行号确定修改位置+修改的内容:Script 是 Sed 的核心,分别对应着:操作的行为,操作的位置和操作的内容。

Sed 的用法也可以按照这个来记:

1
sed [-hnV] [-e <script>] [-f <script文件>] [文本文件]

h 显示 helo ;-n 表示静默输出,-V 显示版本;参考第一种用法,-e 可以指定多个 script 对输入的文件进行处理,-f 则可以将多个 script 写在文件中,通过读取文件中的 scripts 来对文本文件进行处理。

作为文本编辑器,Sed 是一行一行的处理文件内容,将正在处理的每一行内容放在缓冲区中按照约定进行修改,处理后按照约定修改文件或输出,接着在处理下一行,直到整个文件处理内容。

其主要用来编辑和处理一个或者多个文件,简化对于文件的重复操作。

参考资料:sed 和 awk 的区别-知乎 | Man | sed 简明教程 | CoolShell | Linux sed 命令 | 菜鸟教程 | Linux文本三剑客超详细教程—-grep、sed、awk


Grep、Sed、Awk 01-Grep

Grep、Sed、Awk 01-Grep

Linux 三剑客之 Grep。Grep 估计会是大部分 Linux 用户最常用的文本搜索命令了,在三剑客中的使用场景也是最广泛的。在对正则有了基本了解之后,就可以更好的使用 Grep,同时也可以通过 Grep 的使用来更好的掌握常用的正则表达式。

Intro

首先介绍 Grep 命令,Global Regular Expression Print 全局正则表达式输出,使用正则表达式搜索文本内容输出。其使用模板如下:

1
grep [option] pattern file
  • option 指定 grep 的搜索模式
  • pattern 需要搜索的内容,可以用正则表达式指定一个模式来做匹配
  • file 可以是文件夹等路径,用来确定搜索的范围(仅支持通配符)[[Linux三剑客之正则]]

接下来分别对两个部分进行简单的说明,file 的范围指定参考正则文章中对通配符的介绍即可。


Grep、Sed、Awk 00 RegExp

Grep、Sed、Awk 00 RegExp

“awk、grep、sed 是 linux 操作文本的三大利器,合称文本三剑客,也是必须掌握的 linux 命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属 awk 功能最强大,但也最复杂。grep 更适合单纯的查找或匹配文本,sed 更适合编辑匹配到的文本,awk 更适合格式化文本,对文本进行较复杂格式处理。“

Linux文本三剑客超详细教程—-grep、sed、awk

在介绍这三个命令之前,需要对正则表达式有所了解,结合正则表达式来使用,才能发挥这 linux 三剑客的的全部能力。

正则表达式 RegExp

正则表达式: Regual Expression 为一类特殊字符和文本符号共通约定的一种 pattern,其中的一些字符并不表示其本身的含义,而是用来做通配符号。

其中基本正则表达式 BRE 是普遍支持的,而拓展正则表达式 ERE 通常则是需要特殊的参数来启用的。通过正则表达式中特殊符号的辅助,能够更快的过滤,查找,替换,处理字符流等。

除了在 grep、sed、awk 的 linux 三剑客中,在各个语言和各种搜索函数的地方,正则表达式都被普遍支持,应用相当广泛。

基础正则表达式对应的元字符主要有以下几个:

1
^ $ . [ ] *

而拓展正则表达式在上述元字符的基础上增加了:

1
( ) { } ? + | 

等字符,接下来我们将逐一展开各个元字符的作用。


内网穿透(NAT穿透)

内网穿透(NAT穿透)

本文简要介绍对内网穿透技术、对内网穿透技术的需求以及介绍一些用于”个人”进行内网穿透的工具和使用。

1. 什么是内网穿透(NAT traversal)

在计算机科学中,NAT穿越(NAT traversal)涉及TCP/IP中的一个常见问题,即在处于使用了NAT设备的私有TCP/IP网络中的主机之间创建连接的问题。

其中 NAT 即网络地址转换(Network Address Translation)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。

NAT 是作为一种解决IPv4地址短缺以避免保留 IP 地址困难的方案而流行起来的。NAT 成了家庭和小型办公室网络连接上的路由器的一个标准特征。

其中最为常见的 NAT 设备就是家家户户都有的路由器,将所有的设备在局域网中统一管理,并基于唯一的公网 ip 对互联网(私有网络)进行访问。

而 NAT 会带来以下的问题,因此会需要内网穿透的技术:

  • 外网主动发起的服务无法准确的定位到内网的指定机器,会被 NAT 设备丢弃,因此链接会变成单项的,无法双向交互。

因此无法在外网访问内网机器提供给局域网的服务,因此我们的机器,我们部署于 NAS、docker 的服务就只能在局域网中访问,在一定程度上就造成不便。


Macos Configuration01 MacOS terminal 设置

Macos Configuration01 MacOS terminal 设置

Mac 的 Terminal 和 Ubuntu 的操作上较为相似,都是 Unix 的吧,但是要注意一下安全和软件管理库。

其他的参考资料: https://www.youtube.com/watch?v=RNqDkF17ogY&t=787s

Temrinal 终端

The default terminal is zsh, so we do not need to install zsh from scratch.

Brew

we install brew follow the official website settings :

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Iterm 2

After install brew we can install iterm 2 like this :

1
brew install iterm2 --cask

Then we download and config its’ setting in the preference menu. Or export the profile.

Those following settings are what i’m most concerned about, and because of the simple UI, we will not introduce too much.

  • Transparent
  • Snippets
  • Status line
  • Split windows

这将会是我们的主终端应用,后续会结合 fig 一起使用,这给我们提供了媲美,甚至超越 windows terminal 的使用体验。

Seems like 可以取代 tmux 来进行分屏


Whats DevOps?

Whats DevOps?

在一个庞大的组织架构中,CI/CD 和 Devops 的概念是避不开的,了解它的工作原理和概念能帮助我们更好的与他人进行协作。

CI/CD 介绍

这是一个用来描绘 CI/CD 的示意图,其描绘了 CI/CD 的工作流和各自的一些职责,接下来本文分别对两者进行介绍。

CI (Continuous integration) 持续集成

持续集成是面向开发者(Developer)的环节。从上述的图也可以看出,整体的流程如下:

Developer 基于给出的需求进行编码(code),完成 Feature 或者 Bug 修复后,提交(Commit)代码,然后平台会对这些需要(Merge Request)代码进行编译(Build),编译通过后,执行自动化的持续测试(Continuous Test),待测试通过后才会正式合并入主干。

也就是说,CI 工具在检测到代码变更后,自动对其执行编译和单元测试,验证其代码的正确性和可用性,以及是否适合与源代码进行集成,然后进行自动集成。

该流程有以下的优势:

  • 能够避免不同开发环境带来的不一致问题
  • 减少手动操作
  • 清晰的版本管理和控制
  • 降低人为操作的风险

Hexo Icarus 配置

Hexo Icarus 配置

本文的博客页面基于 Hexo)+Icarus 主题搭建,在使用过程中对该主题做了一些简单的配置,以适应自己的需求。这里介绍一下自己粗浅的方案。

十分推荐 Icarus 这个主题,功能支持十分全面而且作者的文档也较为详实,推荐大家去了解。

拓宽显示页面区域

include/style/base.styl 中定义了各种基本页面尺寸:

1
2
3
4
5
$gap ?= 64px
$tablet ?= 769px
$desktop ?= 1088px
$widescreen ?= 1280px
$fullhd ?= 1472px

可以在 include/style/responsive.styl 中定义 2 栏 3 栏情况下所使用的宽度:

1
2
3
4
5
6
7
8
+widescreen()
.is-3-column .container
max-width: $fullhd- $gap
width: $fullhd - $gap

.is-1-column .container, .is-2-column .container
max-width: $widescreen - 2 * $gap
width: $widescreen- 2 * $gap