Unverified Commit 25db55ca authored by kvartet's avatar kvartet Committed by GitHub
Browse files

Update Chinese documents (#3243)

parent 53b565e4
......@@ -7,7 +7,7 @@ Assessor 从 Trial 中接收中间结果,并通过指定的算法决定此 Tri
这是 MNIST 在 "最大化" 模式下使用 "曲线拟合" Assessor 的实验结果。 可以看到 Assessor 成功的 **提前终止** 了许多结果不好超参组合的 Trial。 使用 Assessor,能在相同的计算资源下,得到更好的结果。
*实现代码:[config_assessor.yml](https://github.com/Microsoft/nni/blob/master/examples/trials/mnist-tfv1/config_assessor.yml) *
实现代码: :githublink:`config_assessor.yml <examples/trials/mnist-tfv1/config_assessor.yml>`
.. image:: ../img/Assessor.png
......
......@@ -12,12 +12,10 @@
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
from recommonmark.transform import AutoStructify
from recommonmark.parser import CommonMarkParser
import os
import subprocess
import sys
sys.path.insert(0, os.path.abspath('../../src/sdk/pynni'))
sys.path.insert(1, os.path.abspath('../../src/sdk/pycli'))
sys.path.insert(0, os.path.abspath('../..'))
# -- Project information ---------------------------------------------------
......@@ -29,7 +27,7 @@ author = 'Microsoft'
# The short X.Y version
version = ''
# The full version, including alpha/beta/rc tags
release = 'v1.8'
release = 'v1.9'
# -- General configuration ---------------------------------------------------
......@@ -43,12 +41,12 @@ release = 'v1.8'
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.mathjax',
'sphinx_markdown_tables',
'sphinxarg.ext',
'sphinx.ext.napoleon',
'sphinx.ext.viewcode',
'sphinx.ext.intersphinx',
'nbsphinx',
'sphinx.ext.extlinks',
]
# 添加示例模块
......@@ -59,12 +57,7 @@ templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
source_parsers = {
'.md': CommonMarkParser
}
source_suffix = ['.rst', '.md']
source_suffix = ['.rst']
# The master toctree document.
master_doc = 'contents'
......@@ -197,12 +190,14 @@ epub_title = project
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# external links (for github code)
# Reference the code via :githublink:`path/to/your/example/code.py`
git_commit_id = subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode().strip()
extlinks = {
'githublink': ('https://github.com/microsoft/nni/blob/' + git_commit_id + '/%s', 'Github link: ')
}
# -- Extension configuration -------------------------------------------------
def setup(app):
app.add_config_value('recommonmark_config', {
'enable_eval_rst': True,
'enable_auto_toc_tree': False,
}, True)
app.add_transform(AutoStructify)
app.add_stylesheet('css/custom.css')
......@@ -17,6 +17,7 @@ Neural Network Intelligence
特征工程<feature_engineering>
参考<reference>
示例与解决方案<CommunitySharings/community_sharings>
研究和出版物 <ResearchPublications>
常见问题 <Tutorial/FAQ>
如何贡献 <contribution>
更改日志 <Release>
......@@ -9,4 +9,4 @@
编写新的 Advisor <Tuner/CustomizeAdvisor>
编写新的训练平台 <TrainingService/HowToImplementTrainingService>
安装自定义的 Tuner,Assessor,Advisor <Tutorial/InstallCustomizedAlgos>
如何将自定义的 Tuner 安装为内置 Tuner <Tuner/InstallCustomizedTuner.md>
如何将自定义的 Tuner 安装为内置 Tuner <Tuner/InstallCustomizedTuner>
......@@ -2,7 +2,15 @@
模型压缩
#################
NNI 提供了易于使用的工具包来帮助用户设计并使用压缩算法。
深度神经网络(DNNs)在许多领域都取得了巨大的成功。 然而,典型的神经网络是
计算和能源密集型的,很难将其部署在计算资源匮乏
或具有严格延迟要求的设备上。 因此,一个自然的想法就是对模型进行压缩
以减小模型大小并加速模型训练/推断,同时不会显着降低模型性能。 模型压缩
技术可以分为两类:剪枝和量化。 剪枝方法探索模型权重中的冗余,
并尝试删除/修剪冗余和非关键的权重。 量化是指通过减少
权重表示或激活所需的比特数来压缩模型。
NNI 提供了易于使用的工具包来帮助用户设计并使用剪枝和量化算法。
其使用了统一的接口来支持 TensorFlow 和 PyTorch。
只需要添加几行代码即可压缩模型。
NNI 中也内置了一些流程的模型压缩算法。
......@@ -15,12 +23,10 @@ NNI 中也内置了一些流程的模型压缩算法。
.. toctree::
:maxdepth: 2
概述 <Compressor/Overview>
快速入门 <Compressor/QuickStart>
Pruners <Compressor/Pruner>
Quantizers <Compressor/Quantizer>
自动模型压缩 <Compressor/AutoCompression>
模型加速 <Compressor/ModelSpeedup>
模型压缩 <Compressor/CompressionUtils>
压缩框架 <Compressor/Framework>
自定义压缩算法 <Compressor/CustomizeCompressor>
概述 <Compression/Overview>
快速入门 <Compression/QuickStart>
剪枝 <Compression/pruning>
量化 <Compression/quantization>
工具 <Compression/CompressionUtils>
框架 <Compression/Framework>
自定义压缩算法 <Compression/CustomizeCompressor>
......@@ -18,11 +18,11 @@
:maxdepth: 2
概述 <NAS/Overview>
编写搜索空间 <NAS/WriteSearchSpace>
定义搜索空间 <NAS/WriteSearchSpace>
经典 NAS <NAS/ClassicNas>
One-Shot NAS <NAS/one_shot_nas>
自定义 NAS 算法 <NAS/Advanced>
NAS 可视化 <NAS/Visualization>
Search Space Zoo <NAS/SearchSpaceZoo>
搜索空间集合 <NAS/SearchSpaceZoo>
NAS 基准测试 <NAS/Benchmarks>
API 参考 <NAS/NasReference>
# NNI 客户端
NNI client 是 `nnictl` 的python API,提供了对常用命令的实现。 相比于命令行,用户可以通过此 API 来在 python 代码中直接操控实验,收集实验结果并基于实验结果进行更加高级的分析。 示例如下:
```
from nnicli import Experiment
# 创建 Experiment 实例
exp = Experiment()
# 启动 Experiment,并将实例连接到该 Experiment
# 也可以使用 `resume_experiment`, `view_experiment` 或 `connect_experiment`
# 同一实例中只有上面中的一个函数应该被调用
exp.start_experiment('nni/examples/trials/mnist-pytorch/config.yml', port=9090)
# 更新 Experiment 的并发设置
exp.update_concurrency(3)
# 获取 Experiment 的信息
print(exp.get_experiment_status())
print(exp.get_job_statistics())
print(exp.list_trial_jobs())
# 关闭 Experiment,并将实例与 Experiment 解除关联
exp.stop_experiment()
```
## 参考
```eval_rst
.. autoclass:: nnicli.Experiment
:members:
.. autoclass:: nnicli.TrialJob
:members:
.. autoclass:: nnicli.TrialHyperParameters
:members:
.. autoclass:: nnicli.TrialMetricData
:members:
.. autoclass:: nnicli.TrialResult
:members:
```
NNI 客户端
==========
NNI 客户端是 ``nnictl`` 的python API,提供了对常用命令的实现。 相比于命令行,用户可以通过此 API 来在 python 代码中直接操控实验,收集实验结果并基于实验结果进行更加高级的分析。 示例如下:
.. code-block:: bash
from nni.experiment import Experiment
# 创建一个实验实例
exp = Experiment()
# 开始一个实验,将实例与实验连接
# 你也可以使用 `resume_experiment`, `view_experiment` 或者 `connect_experiment`
# 在一个实例中只能调用其中一个
exp.start_experiment('nni/examples/trials/mnist-pytorch/config.yml', port=9090)
# 更新实验的并发数量
exp.update_concurrency(3)
# 获取与实验相关的信息
print(exp.get_experiment_status())
print(exp.get_job_statistics())
print(exp.list_trial_jobs())
# 停止一个实验,将实例与实验断开
exp.stop_experiment()
参考
----------
.. autoclass:: nni.experiment.Experiment
:members:
.. autoclass:: nni.experiment.TrialJob
:members:
.. autoclass:: nni.experiment.TrialHyperParameters
:members:
.. autoclass:: nni.experiment.TrialMetricData
:members:
.. autoclass:: nni.experiment.TrialResult
:members:
......@@ -8,5 +8,5 @@ Python API 参考
自动调优 <autotune_ref>
NAS <NAS/NasReference>
模型压缩 <Compressor/CompressionReference>
模型压缩 <Compression/CompressionReference>
NNI 客户端 <nnicli_ref>
\ No newline at end of file
......@@ -8,6 +8,8 @@ NNI 支持的训练平台介绍
OpenPAI<./TrainingService/PaiMode>
OpenPAI Yarn 模式<./TrainingService/PaiYarnMode>
Kubeflow<./TrainingService/KubeflowMode>
AdaptDL<./TrainingService/AdaptDLMode>
FrameworkController<./TrainingService/FrameworkControllerMode>
DLTS<./TrainingService/DLTSMode>
AML<./TrainingService/AMLMode>
Heterogeneous<./TrainingService/HeterogeneousMode>
# AMCPruner 示例
此示例将说明如何使用 AMCPruner。
## 步骤一:训练模型
运行以下命令来训练 mobilenetv2 模型:
```bash
python3 amc_train.py --model_type mobilenetv2 --n_epoch 50
```
训练完成之后,检查点文件被保存在这里:
```
logs/mobilenetv2_cifar10_train-run1/ckpt.best.pth
```
## 使用 AMCPruner 剪枝
运行以下命令对模型进行剪枝:
```bash
python3 amc_search.py --model_type mobilenetv2 --ckpt logs/mobilenetv2_cifar10_train-run1/ckpt.best.pth
```
完成之后,剪枝后的模型和掩码文件被保存在:
```
logs/mobilenetv2_cifar10_r0.5_search-run2
```
## 微调剪枝后的模型
加上 `--ckpt``--mask` 参数,再次运行 `amc_train.py` 命令去加速和微调剪枝后的模型。
```bash
python3 amc_train.py --model_type mobilenetv2 --ckpt logs/mobilenetv2_cifar10_r0.5_search-run2/best_model.pth --mask logs/mobilenetv2_cifar10_r0.5_search-run2/best_mask.pth --n_epoch 100
```
[文档](https://nni.readthedocs.io/zh/latest/NAS/Cream.html)
......@@ -10,7 +10,7 @@
## 查看任务准确度
点击 "Default Metric" 来查看所有 Trial 的点图。 将鼠标悬停到某个点查看其准确度。
点击 "Default Metric" 来查看所有尝试的点图。 将鼠标悬停到某个点查看其准确度。
## 查看超参
......@@ -29,4 +29,4 @@
## 反馈
[已知问题](https://github.com/Microsoft/nni/issues)
\ No newline at end of file
[已知问题](https://github.com/Microsoft/nni/issues)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment