使用 docker system df 来查看 Docker 整体占用了多少磁盘空间,类似 Linux 的 df,但统计对象是 Docker 的镜像、容器、数据卷和构建缓存。

示例输出:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          10        3         5.2GB     3.1GB (59%)
Containers      5         1         120MB     80MB (66%)
Local Volumes   4         2         2.0GB     1.0GB (50%)
Build Cache     20        0         800MB     800MB

各列含义:

  • TYPE:Docker 对象类型

    • Images:镜像
    • Containers:容器
    • Local Volumes:本地数据卷
    • Build Cache:构建缓存
  • TOTAL:该类型对象总数
  • ACTIVE:正在被使用的数量

    • 镜像:被容器使用的镜像数
    • 容器:运行中的容器数
    • 卷:被容器挂载使用的卷数
    • 构建缓存:被使用的缓存数
  • SIZE:占用的磁盘空间
  • RECLAIMABLE:预计可清理回收的空间,括号里是占比

常用用法:

docker system df

查看详细列表:

docker system df -v

清理命令:

docker container prune   # 清理停止的容器
docker image prune       # 清理悬空镜像
docker image prune -a    # 清理未被使用的镜像
docker volume prune      # 清理未使用的数据卷,谨慎,可能丢数据
docker builder prune     # 清理构建缓存
docker system prune      # 清理未使用的容器、网络、镜像、缓存

注意:RECLAIMABLE 是估算值,因为镜像层可能被多个镜像共享,实际回收空间不一定完全等于这个数字。数据卷如果还有重要数据,不要随便 prune。

在 Transformer 的 Attention 机制中,$Q$ 和 $K$ 的点积公式是 $Q \cdot K^T = \sum_{i=1}^{d_k} q_i k_i$。
假设 $q$ 和 $k$ 的每个维度都是均值为 0、方差为 1 的独立随机变量,那么点积结果的方差就是 $d_k$(方差累加),标准差就是 $\sqrt{d_k}$。
当 $d_k$(词向量维度)很大时(比如 512、1024),点积出来的数值自然就会很大,可能达到几十甚至上百。

Softmax 的公式是:$Softmax(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}$。
指数函数 $e^x$ 有一个特性:数值稍微大一点,结果就会爆炸式增长。

如果输入的 logits 是 [10, 20, 30],那么 $e^{30}$ 会远远大于 $e^{20}$ 和 $e^{10}$。Softmax 的输出会变成 [极小, 极小, 接近1],这叫做 “饱和(Saturation)” 现象。
一旦 Softmax 的输出接近 One-hot 向量(即某个位置是1,其他全是0),它的导数(梯度)就会趋近于 0。在反向传播时,梯度就消失了,模型参数无法更新。

假设某个 Attention 有 3 个词,计算出的原始点积得分(未归一化)如下:

情况 A:不缩放(数值很大)

  • 输入给 Softmax 的得分:[10, 20, 30]
  • 计算指数:[e^10, e^20, e^30] ≈ [22026, 4.85亿, 1.06万亿]
  • Softmax 输出:[0.000000002, 0.00000045, 0.99999954]
  • 结果:Softmax 几乎变成了 [0, 0, 1]。
  • 梯度:此时如果模型预测错了,想调整参数,但由于输出概率要么是0要么是1,求导得到的梯度几乎是 0(即梯度消失),参数根本动不了,模型无法学习。

情况 B:缩放后(除以 $\sqrt{d_k}$)
假设 $d_k = 64$,那么 $\sqrt{d_k} = 8$。

  • 输入给 Softmax 的得分:[10/8, 20/8, 30/8] = [1.25, 2.5, 3.75]
  • 计算指数:[e^1.25, e^2.5, e^3.75] ≈ [3.49, 12.18, 42.52]
  • Softmax 输出:[0.06, 0.21, 0.73]
  • 结果:输出是一个平滑的概率分布。
  • 梯度:此时的梯度处于健康区间,模型可以通过反向传播正常更新参数。

所以缩放(除以 $\sqrt{d_k}$ )的作用就是把点积的方差拉回 1,让输入 Softmax 的值保持在合理的范围,避免模型进入梯度饱和区。

由于想要用 gpt6.1-sol 所以给codex升级了一下。然后运行就出现了

Error: 拒绝访问。 (os error 5)
To work without the background server, rerun the same command with --no-daemon (including resume or fork and its arguments).

让deepseek搜索了一下说是:
拒绝访问 (os error 5) 错误,在 Windows 上通常意味着 Codex 在安装或启动后台服务(daemon)时,权限被系统拒绝了。

解决:

不降级的方式:

  1. 使用 --no-daemon 模式:在命令后加上 --no-daemon 参数,这会绕过后台服务,让 Codex 直接在当前终端运行。缺点是CLI 会明显变慢,因为失去了后台服务的性能优化。
  2. 关闭后台服务自启:编辑配置文件 %USERPROFILE%\.codex\config.toml,添加以下内容,效果与上一种类似:
[features]
daemon_auto_start = false

降级的方式:

从社区反馈来看,这个问题主要是由 v0.157.0 及之后版本引入的新后台守护进程(daemon)机制导致的。因此,最直接有效的办法就是降级。

社区普遍验证 v0.156.1 是一个稳定可用的版本。

如果通过 npm 安装,先卸载再安装指定版本:

npm uninstall -g @openai/codex
npm install -g @openai/[email protected]

如果使用的是 独立安装程序,可以通过设置环境变量来指定版本:

$env:CODEX_RELEASE="0.156.1"
irm https://chatgpt.com/codex/install.ps1 | iex

清理残留:降级后如果问题依旧,可以尝试删除 %USERPROFILE%\.codex\packages\app-server-daemon 目录,让 Codex 重新初始化。

p.s.
楼主是使用的修改配置文件添加 daemon_auto_start = false ,成功解决。但是这样貌似就不会有守护进程的新特性了,不过从逻辑上来说要是降级了同样也没有这个特性。所以采用了简单的解决方式。对于降级的方式没有尝试,仅作记录。

问题:
在使用pip安装torch时

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126

出现

Fatal error in launcher: Unable to create process using '"D:\?????\.venv\Scripts\python.exe"  "D:\keyan\.venv\Scripts\pip3.exe" install torch torchvision --index-url https://download.pytorch.org/whl/cu126': ???????????

原因:
创建虚拟环境之后,如果给文件夹重命名再使用pip

给文件夹重命名的原因的本来用的中文路径,xarray读取nc文件的时候读取不到

问大肥鱼:
虚拟环境被移动或重命名过:Windows 上的 venv 虚拟环境不是“便携”的。创建时,pip.exe 里就写死了当时 python.exe 的绝对路径。一旦移动或重命名了虚拟环境所在的文件夹,这个路径就会失效。

路径中包含中文或空格:Windows 的启动器在处理包含中文字符或空格的路径时,可能会因为编码问题导致解析失败,出现 ????? 这样的乱码。

方法一:使用 python -m pip 临时绕过

通过 Python 解释器来调用 pip 模块,绕过损坏的 pip.exe 启动器

在当前的虚拟环境 (.venv) 下,直接运行以下命令安装 PyTorch:

python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126

方法二:强制重装 pip 以修复启动器

执行以下命令,让 pip 根据当前正确的路径重新生成启动器文件

python -m pip install --upgrade --force-reinstall pip

方法三:重建虚拟环境

使用如下脚本下载数据

import cdsapi
c = cdsapi.Client()

c.retrieve(
    'reanalysis-era5-pressure-levels',
    {
        'product_type': 'reanalysis',
        'variable': 'temperature',
        'pressure_level': '1000',
        'year': '2024',
        'month': '01',
        'day': ['01','02'],
        'time': ['00:00','06:00','12:00','18:00'],
        'format': 'netcdf',
        'area': [40,100,30,110],  # N,W,S,E 经纬度裁剪【重点,减少文件体积】
    },
    'era5_t2m_202401.nc')

运行时出现

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://cds.climate.copernicus.eu/api/retrieve/v1/processes/reanalysis-era5-pressure-levels/execution
required licences not accepted
Not all the required licences have been accepted; please visit https://cds.climate.copernicus.eu/datasets/reanalysis-era5-pressure-levels?tab=download#manage-licences to accept the required licence(s).

需要手动点击,相关数据的链接接受license

然后重新运行脚本就可以获取到数据了。