MorphNet(2)—— MacOS深度学习
Guangtong li Lv1

MorphNet运行

一、概述

​ morphnet的作用是对网络进行收缩和扩放,在统一扩放基于特定资源约束的收缩过程中进行网络训练,在GroupLasso的正则化方法下完成对filter等结构的搜索,从而保证在同等精准度的情况下实现网络结构的精简和优化

二、平台选择

​ 这里主要实用了ubuntu、MacOS和CoLab进行模型训练,官方代码的测试代码冗余过多,通过官方的dockfile配置环境后无法正常运行model zoo测试,遂转向 .ipynb 文件使用jupyter运行,对测试进行精简,也方便分步调试

1. ubuntu

​ 使用vscode、miniconda,安装兼容的软件包版本后jupyter notebook 输出字体过大,而vscode没有相关设置

​ 解决方案:

​ 安装jupyter-themes,运行以下代码后解决

1
jt -ofs 10

​ 导入v1版本tensorflow包时提示chardet包缺失,虚拟环境中安装后又显示循环导入,无法解决该问题

2. MacOS

2.1 miniconda安装
1
2
3
4
brew install --cask miniconda
conda init
# conda 默认每次开启终端进入base环境,如果不想要终端自启,可以通过以下指令禁止
conda config --set auto_activate_base false

​ miniconda是conda的精简版本,用于管理多种python版本及其软件依赖包组成的虚拟环境。

​ 带有GUI界面的conda更加美观,但内存占用和开销也更大,miniconda没有可视化界面,只能通过命令行控制,更加简洁高效,下面是一些miniconda的基础使用指令

1
2
3
4
5
6
7
8
9
10
11
12
# 进入环境和退出环境
conda activate 虚拟环境名 # 如果是base环境,可以不加环境名
conda deactivate # 退出conda
# 查看当前虚拟环境中已经安装的软件包及其版本
conda list
# 安装和卸载所需软件包
conda install 软件包=版本号 # 也可以使用pip/pip3,这里要注意使用当前虚拟环境下的pip,可以用 which pip/which pip3 进行查看
conda uninstall 软件包
# 创建虚拟环境
conda create -n 虚拟环境名称 python=版本号 软件包=版本号 # 只有python和版本号是必填的软件包设置
# conda缓存清理
conda clean -p # 删除无用的软件包
2.2 Tensorflow安装(GPU版—适配M系列芯片)

​ 这里碰到的问题比较多,tensorflow针对M系列芯片的Mac之前支持性并不好,只有CPU版本,现在apple developer官方放出了GPU版本的tensorflow,个人结合官网和博客(只能使用miniforge,不能使用miniconda),摸索出Mac GPU版本tensorflow安装教程,并在原博客下方给出了新的安装方法

准备:

  • 系统版本: MacOS Monterey(12)及以上

  • miniconda :arm64 version(适配M芯片的版本)

  • python : 3.8+ (创建虚拟环境时注意)

    开始:

    1. 创建虚拟环境

      1
      conda create -n tf python=3.9.13  # 要求 python 3.9 以上版本
    2. 安装apple官方tensorflow依赖包

      1
      2
      conda activate tf  # 先进入刚刚创建的虚拟环境
      conda install -c apple tensorflow-deps
    3. 安装gpu版tensorflow

      这里注意安装前要查看到底python3还是python对应的是虚拟环境下的python,使用虚拟环境下的python对应的pip进行安装才能在虚拟环境中使用(如果你不介意command-line-tool下的python环境和conda虚拟环境乱做一团,也可以不用考虑这个问题,不用安装miniconda,直接在默认全局python种使用pip进行安装也可以)

      1
      2
      # 如果不确定使用python3还是python,可以使用which python查看路径,使用虚拟环境下的python才有效(一般都是python3)
      python3 -m pip install tensorflow-macos
    4. 安装tensorflow metal

      1
      python3 -m pip install tensorflow-metal
    5. 解决内部软件包版本兼容问题

      1
      2
      3
      4
      5
      6
      7
      $ python3     # 进入当前虚拟环境下的python解释器
      import tensorflow (这时会出现报错,提示numpy版本不兼容)
      # 解决方案:
      exit() # 先退出python解释器
      conda uninstall numpy
      pip3 install numpy
      # 然后再尝试导入 tensorflow ,成功
2.3 jupyter notebook安装配置

​ jupyter notebook 主要用来交互式python编程,方便实时查看输出和运行情况和分享运行结果

​ 很容易,通过一行指令即可进行安装

1
conda install jupyter notebook # 注意安装到装有tensorflow的虚拟环境中

​ 运行时输入指令即可自动在默认浏览器打开

1
2
jupyter notebook   # 运行jupyter notebook
jupyter notebook stop 或者 ctrl + c # 退出

​ 当然,你也可以在vscode中进行配置和运行,需要进行如下配置:

  • 安装jupyter官方扩展

  • 安装ipykernel软件包

    这一步非常重要,如果发现切换虚拟环境时发现无法链接到虚拟环境对应的kernel,那么很有可能是你没有为虚拟环境安装ipykernel

    1
    conda install ipykernel

    还有另外一种错误可能是,你的vscode中的jupyter扩展出现了问题,回退到上个版本很可能能帮你解决这个问题

2.4 运行&训练

​ 这里显示模型训练的信息,M2芯片(8 CPU + 10 GPU 版本)一个epoch大概要130s ,而且非常烫(因为没风扇)

​ 相比colab要慢很多(23s/epoch)

image

​ 对比发现训练前后,模型结构更加稀疏了,模型适应方法的作用非常显著(下图是训练前后模型结构)

imageimage

3. CoLab

​ 相比与以上两个平台,好处是不用考虑相关的软件包依赖问题,且GPU算力强大还免费(16G显存真爽,win本上GTX1650显存才4G)

​ 使用技巧后续再发