https://www.gravatar.com/avatar/3c36d6726b341ff003490168e1897f84?s=240&d=mp

Vite+Vue+VsCode

使用 Vite 在 VSCode 中搭建 Vue 开发环境

以下是步骤,指导你如何在 Visual Studio Code (VSCode) 中使用 Vite 搭建 Vue 开发环境。

1. 安装 Node.js 和 npm

首先,你需要安装 Node.js 和 npm(Node 包管理器)。可以从 Node.js 官方网站 下载并安装。

动态规划

为什么会用动态规划,当碰到类似背包问题时,有多个最优目标。这时候如果使用决策树或者分治搜索遍历所有解,会导致重复计算,因为有些子问题相同。所以转换思路,从子问题的增长到最终问题来解决问题。这过程中要定义子问题的状态转移,也就是递推式。

CUDA 编程模型

使用 nvcc 编译器

CUDA 编程入门

逻辑模型

[!NOTE]
Host 为 CPU 端,Device 为 GPU 端

  1. 分配 host 内存,并进行数据初始化;
  2. 分配 device 内存,并从 host 将数据拷贝到 device 上;
  3. 调用 CUDA 的核函数在 device 上完成指定的运算;
  4. 将 device 上的运算结果拷贝到 host 上;
  5. 释放 device 和 host 上分配的内存。

[!NOTE] 运行机制

KCP

  • 本质是一套算法,而下层通信是自己选择(UDP,TCP),通过回调函数(udp.send)的方式进行处理
    • 所以 UDP 收到数据时调用 input 解析 kcp 协议后,调用接受接口就能得到数据
  • 握手机制需要自行协商创建 conv
  • 使用 send 会放到发送队列,当时钟更新(update)后,从队列换到缓冲区

https://s2.loli.net/2025/03/03/pVqZR8AEm9XJiQg.jpg

Transformers 库笔记

说明

  • HuggingFace 推出的 NLP 工具库,能够自动下载数据集以及运行预定好的 pipeline 流程
    • 常见类型有:情感分析,标注,生成,填充,命名实体识别(NER),摘要,翻译,问答
  • 本质是因为模型的推出很快,如果每一个进行尝试就会很慢(如果用 colab 加上 transformers,就能很快使用新模型)
  • 使用 Auto* 类可以使模型操作和架构无关(后续可以切换模型)

pipeline

  • transformer 中的预定义流程,包含模型下载,数据处理,推理模型
    • 直接指定任务即可

tokenizer

  • AutoTokenizer
    • 通过配置载入分词器(一般是载入对应预训练模型的分词器)
    • 直接调用对象就能返回嵌入 ids(提供分词序列)
    • 参数
      • 可以设置填充(可以选择最长填充和模型最大序列长度填充)、截断(根据最大长度截断)、最大长度(一般模型 512、1024)
      • 选择返回张量类型(numpy、pytorch)
      • 默认开启了快速:使用批处理(在 Rust 底层上并行处理)

datasets

  • load_dataset
    • 第一个参数为类型,支持 csv、txt、json、pandas(pkl)
      • json 要指定 field 作为加载数组对象的键值
      • csv 要指定 delimiter 作为文件分割符
    • 使用 data_files= 根据名称加载文件
      • 可以传一个字典显示生命训练和测试文件
      • 可以直接加载 gz 文件,自动解压
      • 可以直接使用 url 文件
    • 使用 DownloadConfig(delete_extracted=True) 删除解压文件
  • load_from_disk:从磁盘加载保存的 Dataset(默认格式)
  • Dataset.map()
    • 可以设置一个数据处理函数如(分词器)
      • 问题是如何设置最大对齐,这里是单个或者小批量的数据给 tokenizer,并不能考虑到全局的最长填充
    • 可以设置小批量处理
    • 可以设置多进程处理数量
  • DataCollatorWithPadding:Dynamic Padding
    • 可以设置一个 tokenizer,做到划分 batch 的时候才填充
    • 会根据分词器生成一个填充函数
      • 获取分词器的填充 idx
      • batch 初始化时调用这个填充函数进行填充,这样能减少过多的冗余数据
    • 可以给 Pytorch 的 Dataset 参数 collate_fn 使用
  • 可以给列设置 FAISS 索引,后续快速查询相似文本

一般数据集由一个 DatasetDict 组成,包含训练、测试集合等;DatasetDict 中包含对应键值的 Dataset 对象

残差网络(ResNet)

[!Tip]
随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。

定义

函数类

$f^*_\mathcal{F} := \mathop{\mathrm{argmin}}_f L(\mathbf{X}, \mathbf{y}, f) \text{ subject to } f \in \mathcal{F}.$

  • $\mathcal{F}$ 是某种神经网络架构(包含超参数和学习率等),我们许要找的一个 $f^_\mathcal{F}$ 函数最接近目标函数 $f^$
  • 如果要升级网络结构到 $\mathcal{F}’$,且 $\mathcal{F} \not\subseteq \mathcal{F}’$ 就会出现问题
    • 因此,只有当较复杂的函数类包含较小的函数类时,我们才能确保提高它们的性能。
    • 所以设计了残差网络,附加层要能包含原始网络
      https://s2.loli.net/2025/03/03/E4Jiajgvpw2Z7mG.png

残差块(residual block)

https://s2.loli.net/2025/03/03/MlCN7kufqTc8yL2.png