Colab使用_文件操作
Colab 本质上是一个运行在 Linux 环境中的云端计算平台。具体特点包括:
- 操作系统:Colab 运行在 Ubuntu(或类似 Linux 发行版)上,因此支持 Linux 命令(如 ls、mkdir、chmod 等)。
- 文件系统:Colab 提供了一个临时的文件系统(/content/ 目录是默认工作目录),你可以克隆存储库、下载文件、创建文件夹等。
- 预装工具:Colab 预装了 Python(通常是某个版本,如 3.7 或 3.10)、pip、Jupyter Notebook 等,允许用户进一步定制环境。
- 临时性:Colab 的环境是临时的,断开连接后,文件和配置可能会丢失(除非保存到 Google Drive 或其他持久存储)
1. Colab 文件的存储位置
Google Colab 是一个云端环境,运行在 Google 的服务器上,而不是你的本地计算机。因此,你在 Colab 上新建的文件(如 PPO1.ipynb)默认存储在 Colab 的临时文件系统中,而不是直接存储在你的本地计算机上。
- 具体位置:
- Colab 提供了一个临时的 Linux 文件系统,默认工作目录是 /content/。
- 新建的 Jupyter Notebook 文件(如 PPO1.ipynb)通常存储在 /content/ 目录下。
- 你可以通过以下命令在 Colab 中确认文件位置:
!pwd # 输出当前工作目录,通常是 /content
!ls # 列出当前目录下的文件,应该能看到 PPO1.ipynb
2. 文件如何存储到本地计算机?
虽然 Colab 的文件默认存储在云端,但你可以通过以下方式将文件保存到本地计算机:
- 手动下载到本地:
- 在 Colab 界面上,点击左侧的文件浏览器(文件夹图标)。
- 找到 PPO1.ipynb,右键选择“下载”。
- 文件会下载到你的计算机的默认下载目录(通常是 ~/Downloads/ 或你浏览器设置的下载路径)。
- Windows 示例:C:\Users\YourUsername\Downloads\PPO1.ipynb
- Mac 示例:/Users/YourUsername/Downloads/PPO1.ipynb
- Linux 示例:/home/YourUsername/Downloads/PPO1.ipynb
- 自动保存到 Google Drive:
- Colab 提供了与 Google Drive 集成的功能,可以将文件保存到 Google Drive,然后再从 Google Drive 下载到本地。
- 操作步骤:
- 1.挂载 Google Drive:
from google.colab import drive
drive.mount('/content/drive')
- 运行后会提示你授权,完成后 Google Drive 会挂载到 /content/drive/My Driv
- 2.将文件保存到 Google Drive:
!cp PPO1.ipynb /content/drive/My\ Drive/PPO1.ipynb
- 3.打开 Google Drive(drive.google.com),找到 PPO1.ipynb,下载到本地。
- 下载后,文件会出现在你的本地下载目录。
3.自动保存到 Google Drive 的功能:
如果你在 Colab 中点击“文件” > “保存”,Colab 会提示将 Notebook 保存到 Google Drive(通常是 My Drive/Colab Notebooks/ 目录)
你可以在 Google Drive 的 Colab Notebooks 文件夹中找到它:
- 路径:My Drive/Colab Notebooks/XXX.ipynb。
colab文件管理操作
创建一个文件夹:
!mkdir my_folder
将文件移动到文件夹:
!mv PPO1.ipynb my_folder/PPO1.ipynb
查看文件夹内容:
!ls my_folder
在文件夹中创建新文件:
with open('my_folder/new_file.txt', 'w') as f:f.write('Hello, Colab!')
4.总结
1.Google Drive 集成:你可以通过挂载 Google Drive,将文件和文件夹保存到云端,实现持久化存储
2.多文件支持:你可以在一个 Notebook 中操作多个文件或文件夹,例如:
克隆整个 GitHub 存储库(包含多个文件和文件夹)。
下载并解压 ZIP 文件(如 Huggy 环境),管理多个文件。
3.管理多个文件和文件夹
在 Colab 中操作:
创建一个项目文件夹,管理所有相关文件:
!mkdir my_project
!mv PPO1.ipynb my_project/
!echo "New content" > my_project/notes.txt
压缩文件夹并下载:
!zip -r my_project.zip my_project
from google.colab import files
files.download('my_project.zip')
5.实战
1. 环境配置
我们需要克隆 ML-Agents 存储库,配置 Python 环境,安装依赖,并下载 Huggy 环境。
# 克隆 ML-Agents 存储库(可能需要 3 分钟),获取最新代码和示例
!git clone --depth 1 https://github.com/Unity-Technologies/ml-agents# 下载 Miniconda 安装脚本,用于创建独立的 Python 环境
!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 赋予安装脚本执行权限,以便运行
!chmod +x Miniconda3-latest-Linux-x86_64.sh
# 静默安装 Miniconda 到 /usr/local 目录,-b 表示非交互式,-f 强制覆盖
!./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local# 激活 Miniconda 环境,准备配置 Python
!source /usr/local/bin/activate
# 在 Miniconda 中安装 Python 3.10.12 和 ujson 包,-q 静默,-y 自动确认
!conda install -q -y --prefix /usr/local python=3.10.12 ujson# 设置 PYTHONPATH 环境变量,指向 Miniconda 的 Python 包路径,确保导入正确
import os
os.environ["PYTHONPATH"] = "/usr/local/lib/python3.10/site-packages/"
# 设置 CONDA_PREFIX 环境变量,指定 Conda 环境路径
os.environ["CONDA_PREFIX"] = "/usr/local/envs/myenv"# 检查当前 Python 版本,确认是否正确安装为 3.10.12
!python --version# 切换工作目录到 ml-agents 存储库根目录
%cd ml-agents
# 安装 ml-agents-envs 包,作为可编辑模式 (-e) 便于开发
!pip3 install -e ./ml-agents-envs
# 安装 ml-agents 包,作为可编辑模式 (-e) 便于开发
!pip3 install -e ./ml-agents# 创建 trained-envs-executables 和 linux 子目录,用于存放环境文件
!mkdir -p ./trained-envs-executables/linux
# 从 Hugging Face 下载 Huggy 环境 ZIP 文件,保存到指定路径
!wget "https://github.com/huggingface/Huggy/raw/main/Huggy.zip" -O ./trained-envs-executables/linux/Huggy.zip
# 解压 Huggy.zip 到 linux 目录,-d 指定目标目录
!unzip -d ./trained-envs-executables/linux/ ./trained-envs-executables/linux/Huggy.zip
# 设置 Huggy 文件夹及其内容的读写执行权限,确保可运行
!chmod -R 755 ./trained-envs-executables/linux/Huggy
2. 模型训练
我们将使用 PPO 算法训练 Huggy 环境,并保存模型到指定目录。ML-Agents 提供了 mlagents-learn 命令来启动训练。
- 创建配置文件: ML-Agents 需要一个 YAML 配置文件来指定 PPO 的超参数。我们创建一个简单的配置文件 ppo_config.yaml。
behaviors:Huggy:trainer_type: ppo # 指定使用 PPO 算法作为训练器hyperparameters:batch_size: 2048 # 每次训练的批次大小buffer_size: 20480 # 经验回放缓冲区大小learning_rate: 0.0003 # 学习率beta: 0.005 # 熵正则化系数,控制探索epsilon: 0.2 # PPO 的剪切范围lambd: 0.95 # 优势函数的衰减因子num_epoch: 3 # 每个批次训练的 epoch 数learning_rate_schedule: linear # 学习率调整策略network_settings:normalize: false # 是否标准化输入hidden_units: 128 # 隐藏层神经元数量num_layers: 2 # 神经网络层数vis_encode_type: simple # 视觉编码类型reward_signals:extrinsic:gamma: 0.99 # 折扣因子,平衡短期和长期奖励strength: 1.0 # 外部奖励的权重keep_checkpoints: 5 # 保留的检查点数量max_steps: 500000 # 最大训练步数time_horizon: 64 # 每次更新的时间步长summary_freq: 10000 # 记录总结的频率(步数)
运行训练: 使用 mlagents-learn 命令训练模型,指定 Huggy 环境和配置文件。
# 使用 mlagents-learn 启动训练,指定配置文件、环境和运行 ID
!mlagents-learn ./ppo_config.yaml --env=./trained-envs-executables/linux/Huggy/Huggy --run-id=huggy-ppo --force
# --force 强制覆盖已有训练结果,训练数据保存在 ./results/huggy-ppo/
3. 保存训练结果
训练完成后,模型文件(.onnx 格式)和日志会保存在 ./results/huggy-ppo/ 目录。我们将这些文件组织到一个项目文件夹 ml_agents_project 中。
# 创建项目文件夹并移动文件
!mkdir -p ml_agents_project
!mv PPO1.ipynb ml_agents_project/ # 假设 PPO1.ipynb 已存在
!mkdir -p ml_agents_project/trained_envs
!mv trained-envs-executables/linux/Huggy ml_agents_project/trained_envs/
!mkdir -p ml_agents_project/models
!mv results/huggy-ppo ml_agents_project/models/
4.上传到 Google Drive
将整个项目文件夹上传到 Google Drive,实现持久化存储。
# 挂载 Google Drive 到 Colab 文件系统
from google.colab import drive
drive.mount('/content/drive')# 将整个项目目录复制到 Google Drive 的 My Drive 路径
!cp -r ml_agents_project /content/drive/My\ Drive/ml_agents_project
下次会话加载
在新的 Colab 会话中,从 Google Drive 加载项目文件夹,继续使用。
# 挂载 Google Drive 到 Colab 文件系统
from google.colab import drive
drive.mount('/content/drive')# 从 Google Drive 复制项目目录到当前工作目录
!cp -r /content/drive/My\ Drive/ml_agents_project .
# 切换到项目目录
%cd ml_agents_project# 列出目录内容,确认文件加载成功
!ls -l
下载到本地
将整个项目文件夹压缩为 ZIP 文件,并下载到本地计算机。
# 压缩项目文件夹
!zip -r ml_agents_project.zip ml_agents_project# 下载到本地
from google.colab import files
files.download('ml_agents_project.zip')
应用示例
场景:你训练了一个 Huggy 环境的 PPO 模型,想将其分享给团队成员,用于展示或进一步开发。
- 操作:
- 按照上述步骤完成训练,保存 ml_agents_project 到 Google Drive。
- 团队成员在新 Colab 会话中加载项目:
!cp -r /content/drive/My\ Drive/ml_agents_project . %cd ml_agents_project
- 加载模型并运行推理:
!mlagents-learn --env=./trained_envs/Huggy/Huggy --run-id=huggy-ppo --resume
- 或者将 ml_agents_project.zip 下载到本地,解压后在本地环境运行。
- 结果:
- 团队成员可以直接使用你的模型和环境,无需重新配置。
- 本地保存的 ZIP 文件可以作为备份,或用于其他平台(例如本地 Unity 项目)。
- 保存的目录层级可视化
在 Google Colab 中,ml_agents_project 文件夹是核心组织单位,包含 Notebook 文件、训练环境和模型文件。以下是保存后的目录结构: -
ml_agents_project/ ├── PPO1.ipynb # 你的 Colab Notebook 文件,记录代码和训练配置 ├── trained_envs/ # 存放训练环境的子目录 │ └── Huggy/ # Huggy 环境的可执行文件和相关资源 │ ├── Huggy # 可执行环境文件 (Linux 二进制) │ ├── Huggy_Data/ # 环境数据文件夹 (可能包含 Unity 资源) │ └── ... # 其他环境相关文件 ├── models/ # 存放训练模型和日志的子目录 │ └── huggy-ppo/ # 训练结果目录,包含模型和检查点 │ ├── Huggy.onnx # 训练好的 PPO 模型文件 │ ├── events.out.tfevents # TensorBoard 日志文件 │ ├── checkpoint # 训练检查点文件 │ ├── ... # 其他训练日志或配置文件 └── (可能包含其他文件) # 未来可能添加的配置文件或脚本
上传到 Google Drive 后的结构
当你运行 !cp -r ml_agents_project /content/drive/My\ Drive/ml_agents_project 时,上述结构会被复制到 Google Drive 的 My Drive/ml_agents_project 路径:
-
Google Drive/ └── My Drive/└── ml_agents_project/├── PPO1.ipynb├── trained_envs/│ └── Huggy/│ ├── Huggy│ ├── Huggy_Data/│ └── ...├── models/│ └── huggy-ppo/│ ├── Huggy.onnx│ ├── events.out.tfevents│ ├── checkpoint│ └── ...└── (可能包含其他文件)
压缩和下载后的本地结构
运行 !zip -r ml_agents_project.zip ml_agents_project 并下载后,解压 ml_agents_project.zip 到本地计算机,将恢复相同的目录结构:
-
本地计算机/ └── Downloads/ (或你指定的目录)└── ml_agents_project.zip (解压后)├── PPO1.ipynb├── trained_envs/│ └── Huggy/│ ├── Huggy│ ├── Huggy_Data/│ └── ...├── models/│ └── huggy-ppo/│ ├── Huggy.onnx│ ├── events.out.tfevents│ ├── checkpoint│ └── ...└── (可能包含其他文件)