作者: Konstantin Stavratiy

  • 你好世界

    欢迎使用 WordPress!这是您的第一篇文章。您可以编辑或删除它,然后开始写作!

  • 闪光已经开始

    疫情已经爆发。

    我们仍在争论技术革命是否会到来,却早已身处其中。

    城市依然矗立。人们照常生活、学习、散步、建造、战斗、发展。一切似乎和从前一样。但灾难已经降临——一场无人察觉其开端的灾难,一场将以各种方式波及数亿人的灾难。这个数字突破十亿的可能性,绝非危言耸听。人类从未经历过如此规模的剧变。然而,一切看起来依然如常。

    熟悉的世界中,有一样东西已经改变。那就是变化的速度本身。

    今天,一个人坐在电脑前就能做到的事,在短短二十年前还只存在于科幻小说里。而且不仅仅是在虚拟世界——尽管目前大部分仍然如此。但已不仅限于虚拟。在现实中,用双手,在车间里,在试验场上。

    一个仓库操作员操控的不再是一台叉车——而是一整支编队。不是五台机器依次作业,而是一群自主重新规划路线、自主避开障碍、自主决定谁去哪里的机器集群。人不再驾驶。人在指挥。在日本、中国、阿联酋的建筑工地上,砌砖机器人和焊接机器人组成的班组轮班作业——没有抽烟的间隙,没有病假,没有工会。一名工程师拿着平板电脑布置好班次任务,转身去喝咖啡。在军队中,事情走得更远。无人机蜂群——不是十架,不是五十架,而是数百架协同攻击的机器——已经不再是实验室里的演示。在乌克兰,操作员操控着FPV无人机编队,一架侦察,一架压制,一架终结,全部实时完成,由一个人坐在掩体里的笔记本电脑前完成。五角大楼启动了"复制者"计划——数千套自主系统,不是十年后部署,而是现在。中国在阅兵式上展示由单一算法和一名观察员操控的数百架无人机蜂群。新一代战斗机座舱里的飞行员不再孤身一人——身旁飞着"忠诚僚机",一架无人机,其决策水平在昨天还只有第二名人类飞行员才能企及。

    一个人的角色正在发生根本性的改变。但不是一个人。是一个组合。人加AI。

    这不再是"人使用工具"。锤子不会跟你争论,不会提出替代方案,不会说"要不我们试试这样"。人与AI的组合是一对搭档:一方下达任务、做出决策,另一方执行、搜索、计算、生成、验证——其速度是任何二十人、五十人、百人团队在物理上不可能达到的。一个配备AI助手的开发者,能编写、测试并发布一款三年前需要整个部门才能完成的产品。一个借助AI的译员,能处理过去需要十五人翻译局才能完成的工作量。一个设计师一个晚上生成的品牌方案,抵得上一个工作室过去一个月的产出。一个分析师处理的文件量,过去需要一个团队花一整周。

    这不是"辅助"。这不是"自动化重复劳动"。这是计量单位的更换。过去,单位是部门。现在,单位是组合。一个人加一个模型。而那些理解了这一点的人,获得了如此巨大的加速,以至于对他们而言,仍按老方法行动的竞争者每天都在落后数天、数周、数月。不是百分之几的差距。是数量级的差距。

    裂缝扩大的速度在加速。不久前还完全盈利的业务,如今连自负盈亏都做不到。但那些使用老旧、成熟技术的人尚未意识到这一点。他们只是看到营收略有下滑。出现了一个奇怪的竞争者——很小,没有办公室,没有员工,没有清晰的架构。他们说:等等看,市场会自我修正,这只是暂时的。

    而这里有一个在董事会上没人愿意开口的问题。

    你有钱。你有一个经营了十五年的品牌。你有合同,有人脉,有一套清晰的模式:投入——一个季度后获得利润。你靠惯性运转,因为惯性连续运转了二十年。你期待下一份报表。下一次分红。下一个周期。

    但你真的还拥有那个季度吗?

    你真的还拥有那些钱吗——还是说,它们已经贬值了,不是被通货膨胀,而是因为你的服务、你的产品、你的专业能力如今已一文不值。因为一个住在出租屋里的人,每月花两百美元订阅一个服务,借助一个思考速度超过你整个部门的模型,在一个周末就做到了同样的事。更好。更便宜。不需要你周一开会。

    你的公司不是被竞争对手杀死的。你的公司被一个人取代了。而那个人甚至没有意识到自己取代了什么。对他来说,那只是一个普通的星期二。

    闪光已经发生了。光已经不同了。影子已经移位了。而你还在盯着旧的影子,困惑它们为什么对不上了。

  • MIT 深度学习实验 1:我如何配置环境,以及为什么事情比一条命令复杂得多

    我开始学习 MIT 深度学习课程的第一个实验。还没真正接触到神经网络,我就先完成了一个小型的独立实验:配置运行环境。

    实验本身的开头很简单。需要导入 PyTorch 和几个额外的库:

    import torch
    import torch.nn as nn
    
    # Download and import the MIT Introduction to Deep Learning package
    !pip install mitdeeplearning --quiet
    import mitdeeplearning as mdl
    
    import numpy as np
    import matplotlib.pyplot as plt

    如果在 Jupyter Notebook 或 Google Colab 这类预先配置好的环境中运行实验,也许到这一步确实几乎不需要做其他事情。

    但我决定在 Windows 上本地运行所有内容。于是我发现,实验中的几行代码至少要求我对实际发生的事情有一点基本了解。

    第一次运行:Python 不知道 torch 是什么

    我启动了普通的 Python 解释器并尝试:

    import torch

    得到的回应是:

    ModuleNotFoundError: No module named 'torch'

    这个错误很容易理解:Python 已经安装,但当前环境中没有 PyTorch。

    我退出了解释器:

    exit()

    然后在 PowerShell 中安装 PyTorch:

    python -m pip install torch

    为什么使用 python -m pip,而不是直接使用 pip

    因为这种写法明确表示:用当前由 python 命令调用的 Python 解释器运行 pip 模块。当系统中存在多个 Python 版本和多个环境时,这有助于避免混淆。

    安装成功完成:

    Successfully installed ... torch-2.13.0 ...

    不过,系统提示某些可执行文件位于一个不在 PATH 中的目录:

    WARNING: The scripts torchfrtrace.exe and torchrun.exe are installed in
    'C:\Users\dante\AppData\Local\Python\pythoncore-3.14-64\Scripts'
    which is not on PATH.

    对于我当前的任务来说,这不是致命错误。软件包本身已经安装成功。

    PyTorch 可以运行了,但下一个问题出现了

    我再次启动 Python:

    import torch

    这一次不再有 ModuleNotFoundError,但出现了一条警告:

    UserWarning: Failed to initialize NumPy: No module named 'numpy'

    也就是说,PyTorch 本身已经可以导入,但它缺少 NumPy。

    我检查版本:

    print(torch.__version__)

    得到:

    2.13.0+cpu

    这已经是一个好迹象:PyTorch 已安装并可以工作。

    这里的 +cpu 表示安装的是 PyTorch 的 CPU 版本。对于开始这个实验来说已经足够。等真正需要时,再单独解决 GPU 的使用问题。

    实验中的命令并不是普通 Python

    实验中的下一行是:

    !pip install mitdeeplearning --quiet

    如果直接把它复制到普通的 Python 解释器中,它不会运行。

    原因在于 ! 字符。

    这不是普通的 Python 语法。Jupyter/IPython 使用它从 Notebook 单元格中直接运行操作系统命令。

    因此,我没有使用:

    !pip install mitdeeplearning --quiet

    而是在 PowerShell 中使用:

    python -m pip install mitdeeplearning

    看起来现在一切都应该能安装了。

    但事实并非如此。

    为什么我决定改用虚拟环境

    安装 mitdeeplearning 时出现了错误。此时我意识到,继续把所有内容直接安装到系统 Python 中并不是一个好主意。

    最好为这个实验创建一个单独的虚拟环境。

    在项目目录中:

    C:\Users\dante\OneDrive\Documents\Learning Lab1

    我创建了虚拟环境:

    python -m venv .venv

    由此生成了一个目录:

    .venv

    其中包含这个项目专用的独立 Python 解释器和独立的库集合。

    通常,创建虚拟环境后要将其激活。但由于 PowerShell 的脚本执行策略,它拒绝运行激活脚本。

    我不想仅仅为了这个实验修改 Windows 的系统策略。

    这时我发现了一件很有用的事:虚拟环境根本不一定需要激活

    可以直接运行其中的 Python:

    .\.venv\Scripts\python.exe --version

    我的结果是:

    Python 3.14.5

    也可以用下面的方式,把软件包明确安装到这个环境中:

    .\.venv\Scripts\python.exe -m pip install ...

    我甚至很喜欢这种方式的直观性:我可以准确看到自己正在使用哪个 Python。

    setuptools 的问题

    下一次尝试中,我限制了 setuptools 的版本:

    .\.venv\Scripts\python.exe -m pip install "setuptools<82"

    安装了以下版本:

    Successfully installed setuptools-81.0.0

    但这没有解决主要问题。

    再次尝试后,我意识到问题已经不仅仅是 setuptools

    真正的问题是 Python 版本。

    Python 3.14 太新了

    我安装的是 Python 3.14.5。

    PyTorch 本身已经可以在该版本上运行,但 mitdeeplearning 会引入一个相当庞大的依赖树。对于这么新的 Python 版本,其中某处出现了兼容性问题。

    这是一个很有意思的实践经验。

    最新版本的 Python 并不总是科学计算库的最佳选择。

    Python 的发展速度比整个生态系统的适配速度更快。在机器学习领域这一点尤其明显,因为这里常常使用包含原生组件并拥有大量依赖的大型库。

    因此,我决定再安装一个 Python 版本:Python 3.13.15

    完全不需要删除系统中的 Python 3.14。Windows 可以同时安装多个 Python 版本。

    使用 Python 3.13 重新创建环境

    旧的虚拟环境是用 Python 3.14 创建的,因此仅仅安装 Python 3.13 并不会改变它。

    我删除旧环境:

    Remove-Item -Recurse -Force .venv

    然后明确使用 Python 3.13 创建新环境:

    py -3.13 -m venv .venv

    进行检查:

    .\.venv\Scripts\python.exe --version

    得到:

    Python 3.13.15

    现在一切正确了。

    我再次安装合适版本的 setuptools

    .\.venv\Scripts\python.exe -m pip install "setuptools<82"

    然后安装 PyTorch:

    .\.venv\Scripts\python.exe -m pip install torch

    安装成功完成。

    我进行检查:

    .\.venv\Scripts\python.exe -c "import torch; print(torch.__version__)"

    得到:

    2.13.0+cpu

    同时再次出现了 NumPy 警告:

    UserWarning: Failed to initialize NumPy: No module named 'numpy'

    但现在它已经不再显得可怕。PyTorch 可以工作,而 NumPy 无论如何都会作为 mitdeeplearning 的依赖项之一安装。

    安装 mitdeeplearning

    下一步:

    .\.venv\Scripts\python.exe -m pip install --no-build-isolation mitdeeplearning

    这时,一次真正庞大的安装开始了。

    mitdeeplearning 远远不算一个小软件包。它开始同时下载:

    numpy
    tensorflow
    keras
    transformers
    datasets
    peft
    gym
    opik
    openai
    pandas
    pyarrow
    ...

    仅 TensorFlow 就超过了 350 MB:

    Downloading tensorflow-2.21.0 ... (351.2 MB)

    此外,pip 还自行构建了 mitdeeplearninggym 的 wheel 软件包:

    Building wheel for mitdeeplearning ... done
    Building wheel for gym ... done

    最后:

    Successfully installed ... mitdeeplearning-0.7.5 ...

    主要问题得到了解决。

    安装软件包并不意味着实验一定能运行

    之后,我和 AI 助手决定不因为 pip 显示了 Successfully installed 就认为任务已经完成。

    最好检查实验实际使用的那些导入。

    结果发现缺少 matplotlib

    我进行安装:

    .\.venv\Scripts\python.exe -m pip install matplotlib

    下一次检查又发现了另一个依赖项:ipython

    .\.venv\Scripts\python.exe -m pip install ipython

    再下一次尝试执行到了:

    import cv2

    cv2 由 OpenCV 库提供,因此我安装了:

    .\.venv\Scripts\python.exe -m pip install opencv-python

    然后再次运行检查。

    环境的最终检查

    现在,我一次性检查实验的主要导入:

    .\.venv\Scripts\python.exe -c "import torch; import torch.nn as nn; import mitdeeplearning as mdl; import numpy as np; import matplotlib.pyplot as plt; print('torch:', torch.__version__); print('numpy:', np.__version__); print('Все импорты работают')"

    这一次得到:

    torch: 2.13.0+cpu
    numpy: 2.5.2
    Все импорты работают

    终于成功了。

    不过在此之前,TensorFlow 输出了关于 oneDNN 的信息:

    oneDNN custom operations are on.
    You may see slightly different numerical results due to
    floating-point round-off errors...

    这是警告,而不是错误。该库是在说明它使用了经过优化的 CPU 运算;由于计算顺序不同,浮点结果可能会有极小差异。

    Gym 还显示了一条警告:

    Gym has been unmaintained since 2022 and does not support NumPy 2.0...
    Please upgrade to Gymnasium...

    这更值得注意:mitdeeplearning 软件包使用的是旧版 gym。该项目已经不再得到官方维护,并且会针对现代 NumPy 版本的兼容问题发出警告。

    但目前导入仍然成功。因此,我不打算提前修复尚未真正出错的东西。如果实验中的某个具体部分确实因为 gym 和 NumPy 不兼容而失败,我会再单独调查这个问题。

    最终结果

    实验的工作环境现在大致如下:

    Learning Lab1
    │
    └── .venv
        ├── Scripts
        ├── Lib
        └── ...

    最重要的是,整套库都位于 .venv 内,而不是散落在系统 Python 中。

    运行 Python 时,我甚至不需要激活环境:

    .\.venv\Scripts\python.exe

    安装新软件包时:

    .\.venv\Scripts\python.exe -m pip install имя_пакета

    运行脚本时:

    .\.venv\Scripts\python.exe script.py

    如果让我重新安装一次

    经过所有这些实验,整个顺序现在清楚得多。

    安装 Python 3.13 并创建环境:

    py -3.13 -m venv .venv

    检查版本:

    .\.venv\Scripts\python.exe --version

    安装合适版本的 setuptools

    .\.venv\Scripts\python.exe -m pip install "setuptools<82"

    安装 PyTorch:

    .\.venv\Scripts\python.exe -m pip install torch

    安装 MIT 软件包:

    .\.venv\Scripts\python.exe -m pip install --no-build-isolation mitdeeplearning

    然后安装我的实验版本所需但缺失的依赖项:

    .\.venv\Scripts\python.exe -m pip install matplotlib ipython opencv-python

    最后检查环境:

    .\.venv\Scripts\python.exe -c "import torch; import torch.nn as nn; import mitdeeplearning as mdl; import numpy as np; import matplotlib.pyplot as plt; print('torch:', torch.__version__); print('numpy:', np.__version__); print('Все импорты работают')"

    我从这次安装中学到了什么

    有趣的是,我还没真正开始深度学习实验,却已经获得了几条非常实用的 Python 经验。

    第一,不能总是不加思考地把 Jupyter Notebook 中的代码复制到普通 Python 中。下面这种结构:

    !pip install ...

    属于 Jupyter/IPython 环境,而不属于 Python 语言本身。

    第二,虚拟环境并不只是给专业程序员增加复杂度的东西。它是一种隔离特定项目依赖项的便捷方式。

    第三,虚拟环境完全不一定要激活。可以明确调用其中的解释器:

    .\.venv\Scripts\python.exe

    第四,最新版本的 Python 可能太新。Python 3.14 安装得很顺利,甚至可以运行 PyTorch,但 mitdeeplearning 庞大的依赖树迫使我退回 Python 3.13。

    最后,Successfully installed 消息并不能保证整个项目已经准备好运行。实际执行所需的导入并查看还缺少什么,会有用得多。

    在整个过程中,AI 助手给了我很大帮助。如果完全靠自己,我大概也能逐步找到答案——文档、搜索、Stack Overflow 和反复尝试都还在那里。但要找出每一个新错误的原因,会花费更多时间。

    在这里,AI 并没有取代学习,而更像是一位坐在旁边的助手:我运行命令,遇到错误,尝试理解它的含义,把结果展示给 AI,获得解释和下一种方案,然后再次验证。

    这大概也是学习如何使用现代工具的一部分。

    最重要的是,环境终于可以工作了:

    torch: 2.13.0+cpu
    numpy: 2.5.2
    Все импорты работают

    今天到这里就足够了。

    下一次我会继续完成这个实验。