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 | brew install --cask miniconda |
miniconda是conda的精简版本,用于管理多种python版本及其软件依赖包组成的虚拟环境。
带有GUI界面的conda更加美观,但内存占用和开销也更大,miniconda没有可视化界面,只能通过命令行控制,更加简洁高效,下面是一些miniconda的基础使用指令
1 | 进入环境和退出环境 |
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
conda create -n tf python=3.9.13 # 要求 python 3.9 以上版本
安装apple官方tensorflow依赖包
1
2conda activate tf # 先进入刚刚创建的虚拟环境
conda install -c apple tensorflow-deps安装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安装tensorflow metal
1
python3 -m pip install tensorflow-metal
解决内部软件包版本兼容问题
1
2
3
4
5
6
7python3 # 进入当前虚拟环境下的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 | jupyter notebook # 运行jupyter notebook |
当然,你也可以在vscode中进行配置和运行,需要进行如下配置:
安装jupyter官方扩展
安装ipykernel软件包
这一步非常重要,如果发现切换虚拟环境时发现无法链接到虚拟环境对应的kernel,那么很有可能是你没有为虚拟环境安装ipykernel
1
conda install ipykernel
还有另外一种错误可能是,你的vscode中的jupyter扩展出现了问题,回退到上个版本很可能能帮你解决这个问题
2.4 运行&训练
这里显示模型训练的信息,M2芯片(8 CPU + 10 GPU 版本)一个epoch大概要130s ,而且非常烫(因为没风扇)
相比colab要慢很多(23s/epoch)
对比发现训练前后,模型结构更加稀疏了,模型适应方法的作用非常显著(下图是训练前后模型结构)
3. CoLab
相比与以上两个平台,好处是不用考虑相关的软件包依赖问题,且GPU算力强大还免费(16G显存真爽,win本上GTX1650显存才4G)
使用技巧后续再发