量化可视化指南揭秘:大型语言模型的压缩

量化技术图解指南

深入浅出,揭秘大语言模型的压缩之道


所谓大语言模型(LLM),“大”是其最显著的特征之一。这不仅体现在它们能够处理海量信息,更直接地体现在其庞大的体积上。这些模型动辄拥有数十亿的参数,通常需要配备大显存的顶级 GPU 才能流畅运行,这无疑将许多普通用户和开发者拒之门外。

02.Uniswap V2 Swap 操作

这份学习笔记将Uniswap V2的swap操作进行了深入剖析,涵盖了其核心机制、数学原理和代码实现,以及手续费的计算方式。

核心摘要 (Key Takeaways)

  • Uniswap V2 架构与路由灵活性:V2引入了任何ERC20代币之间直接交换的能力,不再强制通过ETH作为中介。用户通过UniswapV2Router02合约进行交互,该合约负责寻找并协调UniswapV2Pair合约完成交易,支持单跳和多跳(多级路由)交换。
  • 两种核心交换类型:V2提供了两种主要的swap函数:
    1. swapExactTokensForTokens:用户指定精确的输入代币数量,系统计算并返回尽可能多的输出代币。
    2. swapTokensForExactTokens:用户指定精确的输出代币数量,系统计算所需的最小输入代币数量。
  • 0.3%固定手续费机制:每次swap操作都会对输入代币收取0.3%(千分之三)的手续费。这意味着实际用于AMM计算的输入量是用户提供量的99.7%。多跳交易会累积手续费。
  • 数学原理与代码实现UniswapV2Library中的getAmountOutgetAmountIn函数是核心计算逻辑,它们基于恒定乘积做市商(AMM)公式,并融入了0.3%的手续费计算,确保了交易的准确性。
  • 滑点与MEV攻击:用户可以通过设置amountOutMin(最小输出量)来控制滑点。然而,这种机制也可能被MEV(矿工可提取价值)套利者利用,通过三明治攻击(Front-running + Back-running)来捕获用户设定的最小输出与实际可能输出之间的差价。

1. Uniswap V2 核心架构与合约

Uniswap V2 的代码主要存在于两个仓库:

03.Uniswap V2 手续费机制

核心摘要 (Key Takeaways)

  • 流动性增长:Uniswap V2 的千三(0.3%)交易手续费会直接重新注入到流动性池中,导致池子中的资产(X和Y)缓慢增长,进而使总流动性 K 值不断增大。
  • LP 收益机制:流动性提供者(LP)通过持有 LP Token (Share) 来证明其在池中的份额。当池子总流动性 K 增长时,LP Token 的总份额不变,因此每个 LP Token 所代表的实际资产价值会提升,LP 在撤出流动性时能获得更多资产。
  • 协议手续费 (PROTOCOL_FEE):Uniswap V2 设计了一种机制,允许协议开发者收取一部分手续费(例如千三的 1/6,即万分之五)。这通过增发新的 LP Token (Share) 给协议方来实现,从而让协议方在不提供流动性的前提下,分享流动性增长带来的收益。
  • 链上状态:尽管 Uniswap V2 设计了协议手续费机制,但目前该功能并未在主网上开启。通过检查 UniswapV2Factory 合约的 feeTo 地址是否为零,可以验证其开启状态。

1. Uniswap V2 手续费机制概览

1.1 基础概念:流动性与 LP Token

  • 恒定乘积做市商 (CPMM):Uniswap V2 基于 X * Y = K 的公式进行资产交换,其中 XY 分别代表池中两种资产的数量,K 是一个常数(在无手续费和无流动性增减的情况下)。
  • 流动性 (L):在 Uniswap V2 中,流动性 L 通常指 sqrt(K)
    • 公式:L=KL = \sqrt{K}
  • LP Token (Share / LPT):当用户向 Uniswap 池中提供流动性时,会获得相应数量的 LP Token 作为凭证。这些 Token 代表了用户在池中的份额。
    • S1:在 T1 时刻,LP Token 的总数量。

1.2 千三手续费 (0.3%)

  • 收取方式:每笔交易都会收取 0.3% 的手续费。这笔费用并不是直接从交易对的另一方扣除,而是从进入池子的 Token 中扣除。
    • 例如,用户用 DX 数量的 X 资产购买 Y 资产,池子实际上只收到 (1 - 0.003) * DX = 0.997 * DX
  • 归属:这 0.3% 的手续费直接重新注入到流动性池中,而非直接分配给某个用户或地址。

2. 流动性增长的逻辑

2.1 为什么流动性会增长 (K2 > K1)?

  • 手续费的积累:由于 0.3% 的手续费被重新注入到池子中,池子里的 XY 资产总量会随着交易量的增加而缓慢增长。
    • 如果用 DX 购买 Y,池子收到 0.997 * DX。这 0.997 * DX 增加了池子里的 X 资产。
    • 如果用 DY 购买 X,池子收到 0.997 * DY。这 0.997 * DY 增加了池子里的 Y 资产。
  • 结果:只要有交易发生,池子中的 XY 资产总量就会增加,从而导致 K 值(即 X * Y)不断增大。
    • K2>K1K_2 > K_1 (在不考虑流动性增减的情况下)。

2.2 案例分析:DAI/USDT 池子

为了更好地理解流动性增长和套利机制,我们以 DAI/USDT 稳定币交易对为例:

04.Uniswap V2 添加移除流动性

核心摘要 (Key Takeaways)

  • 核心公式与流动性衡量: Uniswap V2 的流动性池基于 X×Y=KX \times Y = K 恒定乘积公式,其中 L=KL = \sqrt{K} 被用作衡量流动性大小的线性指标,便于 LP Token (LPT) 的线性增发与销毁。
  • 价格不变性约束: 无论是添加还是移除流动性,操作前后池内两种代币的价格比(即兑换价格)必须保持不变,这是确保用户按当前市场价提供或撤出流动性的核心原则。
  • LPT 增发/销毁机制: 添加流动性时,新铸造的 LP Token 数量与新增流动性占总流动性的比例成正比;移除流动性时,用户收回的代币数量也与销毁的 LP Token 占总 LP Token 的比例成正比。
  • Uniswap V2 合约架构: 核心交互涉及 路由合约 (Router)工厂合约 (Factory)交易对合约 (Pair)。路由合约是用户入口,工厂合约负责创建交易对,交易对合约管理实际的流动性池和代币交换。
  • 关键工程实现: 智能合约实现中包含多项精巧设计,如使用 create2 预测交易对地址、对代币地址进行排序以确保交易对的唯一性、以及设置 minimum liquidity 机制以增强安全性和稳定性。

Uniswap V2 流动性管理概述

本节课主要围绕 Uniswap V2 中的添加流动性移除流动性无常损失(本节课不深入讲解)三个核心概念。目标是清晰梳理前两个概念的数学原理和合约实现流程。

05.Uniswap V2 无常损失

Uniswap V2 无常损失深度解析

核心摘要 (Key Takeaways)

  • 无常损失 (Impermanent Loss) 是指在去中心化交易所(DEX)中提供流动性(LP)的资产价值,与仅仅持有这些资产(HODL)相比所产生的价值差异。
  • 其核心特征可以总结为一句口诀:“涨价少赚钱,降价多亏钱”。无论市场朝哪个方向波动,只要价格发生变化,LP的资产价值增长总会慢于或亏损总会多于单纯持有者。
  • 手续费的核心作用之一是弥补无常损失。DEX 通过向 LP 支付交易手续费,不仅是为了激励用户提供流动性,更是为了补偿他们在价格波动中可能遭受的无常损失。
  • 无常损失的大小可以通过一个数学公式量化,它只与资产的相对价格变化率有关,而与流动性池的大小或具体的资产价格无关。
  • 在 Uniswap V2 中,价格波动越大,无常损失就越严重。而在 Uniswap V3 中,由于流动性被集中在特定价格区间,无常损失的问题会更加显著

1. 什么是无常损失 (Impermanent Loss)?

1.1 核心定义

无常损失 (Impermanent Loss, 简称 IL) 是指当您作为流动性提供者 (LP) 将资金存入一个流动性池后,由于池中代币的相对价格发生变化,导致您撤出资金时的总价值低于您从一开始就选择单纯持有 (HODL) 这些代币的价值。