Unverified Commit 297a1e2e authored by Yuge Zhang's avatar Yuge Zhang Committed by GitHub
Browse files

Refine readme, index and quickstart (#4659)

parent 01e9a28f
<div align="center">
<img src="docs/img/nni_logo.png" width="80%"/>
<img src="docs/img/nni_logo.png" width="600"/>
</div>
<br/>
......@@ -11,7 +11,7 @@
[![Version](https://img.shields.io/github/release/Microsoft/nni.svg)](https://github.com/Microsoft/nni/releases)
[![Documentation Status](https://readthedocs.org/projects/nni/badge/?version=stable)](https://nni.readthedocs.io/en/stable/?badge=stable)
NNI automates feature engineering, neural architecture search, hyperparameter tuning, and model compression for deep learning. Find the latest features, API, examples and tutorials in our **[official documentation](https://nni.readthedocs.io/) ([简体中文版点这里](https://nni.readthedocs.io/zh/))**. Quick links:
NNI automates feature engineering, neural architecture search, hyperparameter tuning, and model compression for deep learning. Find the latest features, API, examples and tutorials in our **[official documentation](https://nni.readthedocs.io/) ([简体中文版点这里](https://nni.readthedocs.io/zh/stable))**. Quick links:
* [Documentation homepage](https://nni.readthedocs.io/)
* [Installation guide](https://nni.readthedocs.io/en/stable/installation.html)
......@@ -50,18 +50,20 @@ To update NNI to the latest version, add `--upgrade` flag to the above commands.
## Run your first experiment
To run this experiment, you need to have [XXX](link) installed.
To run this experiment, you need to have [PyTorch](https://pytorch.org/) (as well as [torchvision](https://pytorch.org/vision/stable/index.html)) installed.
```shell
$ nnictl hello-world
$ nnictl hello
```
Wait for the message `INFO: Successfully started experiment!` in the command line. This message indicates that your experiment has been successfully started. You can explore the experiment using the `Web UI url` shown in the console.
It will generate `nni_hello_hpo` folder in your current working directory, which contains a minimum hyper-parameter tuning example. It will also prompt you to run
```text
TBD
```shell
python nni_hello_hpo/main.py
```
to launch your first NNI experiment. Use the web portal URL shown in the console to monitor the running status of your experiment.
<img src="docs/static/img/webui.gif" alt="webui" width="100%"/>
For more usages, please see [NNI tutorials](https://nni.readthedocs.io/en/stable/tutorials.html).
......@@ -83,7 +85,7 @@ Participating discussions via the following IM groups is also welcomed.
Over the past few years, NNI has received thousands of feedbacks on GitHub issues, and pull requests from hundreds of contributors.
We appreciate all contributions from community to make NNI thrive.
<a href="https://github.com/microsoft/nni/graphs/contributors"><img src="https://contrib.rocks/image?repo=microsoft/nni&max=240" width="60%" /></a>
<a href="https://github.com/microsoft/nni/graphs/contributors"><img src="https://contrib.rocks/image?repo=microsoft/nni&max=240" width="600" /></a>
## Test status
......
......@@ -4,7 +4,7 @@ build/
_build/
# ignored copied rst in tutorials
**/tutorials/cp_*.rst
**/tutorials/**/cp_*.rst
# auto-generated reference table
_modules/
......@@ -26,7 +26,7 @@ CARD_TEMPLATE_HEADER = """
</div>
<h3>{title}</h3>
<h4>{title}</h4>
</div>
"""
......
......@@ -3,24 +3,18 @@
import os
import re
cp_list = {
'tutorials/hello_nas.rst': 'tutorials/cp_hello_nas_quickstart.rst',
'tutorials/pruning_quick_start_mnist.rst': 'tutorials/cp_pruning_quick_start_mnist.rst',
'tutorials/pruning_speed_up.rst': 'tutorials/cp_pruning_speed_up.rst',
'tutorials/quantization_quick_start_mnist.rst': 'tutorials/cp_quantization_quick_start_mnist.rst',
'tutorials/quantization_speed_up.rst': 'tutorials/cp_quantization_speed_up.rst',
}
HEADER = """.. THIS FILE IS A COPY OF {} WITH MODIFICATIONS.
.. TO MAKE ONE TUTORIAL APPEAR IN MULTIPLE PLACES.
"""
def flatten_filename(filename):
return filename.replace('/', '_').replace('.', '_')
def copy_tutorials(app):
# TODO: use sphinx logger
print('[tutorial links] copy tutorials...')
for src, tar in cp_list.items():
for src, tar in app.config.tutorials_copy_list:
target_path = os.path.join(app.srcdir, tar)
content = open(os.path.join(app.srcdir, src)).read()
......@@ -29,8 +23,11 @@ def copy_tutorials(app):
# Add a prefix to labels to avoid duplicates.
label_map = {}
for prefix, label_name in list(re.findall(r'(\.\.\s*_)(.*?)\:', content)):
label_map[label_name] = 'tutorial_cp_' + label_name
# find all anchors: https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html
# but not hyperlinks: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#external-links
for prefix, label_name in list(re.findall(r'(\.\.\s*_)(.*?)\:\s*\n', content)):
label_map[label_name] = flatten_filename(tar) + '_' + label_name
# anchor
content = content.replace(prefix + label_name + ':', prefix + label_map[label_name] + ':')
# :ref:`xxx`
......@@ -45,3 +42,4 @@ def setup(app):
# See life-cycle of sphinx app here:
# https://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx-core-events
app.connect('builder-inited', copy_tutorials)
app.add_config_value('tutorials_copy_list', [], True, [list])
<svg width="52" height="41" viewBox="0 0 52 41" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 4C0 1.79086 1.79086 0 4 0H20C22.207 0 23.9965 1.78737 24 3.99353C24 3.99572 24 3.99791 24 4.00012C24 5.6481 25.3288 6.98572 26.9734 7H48C50.2091 7 52 8.79086 52 11V37C52 39.2091 50.2091 41 48 41H4C1.79086 41 0 39.2091 0 37V11V4Z" fill="#374BAE"/>
<path d="M10.5 26L17.5 16.5L28.5 28.5L41.5 23.5" stroke="white"/>
<circle cx="10" cy="27" r="2" fill="#FF78B0"/>
<circle cx="17.5" cy="16.5" r="2.5" fill="#FDDE83"/>
<circle cx="41.5" cy="23.5" r="2.5" fill="white"/>
<path d="M33 27.5C33 29.9853 30.9853 32 28.5 32C26.0147 32 24 29.9853 24 27.5C24 25.0147 26.0147 23 28.5 23C30.9853 23 33 25.0147 33 27.5Z" fill="#A3DAF8"/>
</svg>
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 4C0 1.79086 1.79086 0 4 0H20C23.3137 0 26 2.68629 26 6V26C26 28.2091 24.2091 30 22 30H4C1.79086 30 0 28.2091 0 26V4Z" fill="url(#paint0_linear_12_337)"/>
<path d="M20 0V0C23.3137 0 26 2.68629 26 6V6H20V0Z" fill="url(#paint1_linear_12_337)"/>
<path opacity="0.2" d="M6 19.5L13 15.5L20 19.5L13 23.5L6 19.5Z" fill="white"/>
<path opacity="0.2" d="M6 16L13 12L20 16L13 20L6 16Z" fill="white"/>
<path d="M6 12L13 8L20 12L13 16L6 12Z" fill="white"/>
<g filter="url(#filter0_b_12_337)">
<rect x="18" y="16" width="14" height="10" rx="2" fill="#FFBFBB" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_12_337)">
<rect x="18.1" y="16.1" width="13.8" height="9.8" rx="1.9" stroke="url(#paint2_linear_12_337)" stroke-width="0.2"/>
</g>
<path d="M28 20V18H26M28 22V24H26M24 18H22V20M22 22V24H24" stroke="#EA501F"/>
<rect x="24" y="20" width="2" height="2" rx="1" fill="#EA501F"/>
<defs>
<filter id="filter0_b_12_337" x="14" y="12" width="22" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_337"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_337" result="shape"/>
</filter>
<filter id="filter1_b_12_337" x="10" y="8" width="30" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_337"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_337" result="shape"/>
</filter>
<linearGradient id="paint0_linear_12_337" x1="23" y1="28.125" x2="2.28188" y2="-0.358586" gradientUnits="userSpaceOnUse">
<stop stop-color="#E15D33"/>
<stop offset="1" stop-color="#FFA37B"/>
</linearGradient>
<linearGradient id="paint1_linear_12_337" x1="21.5" y1="6" x2="24.7771" y2="2.16386" gradientUnits="userSpaceOnUse">
<stop stop-color="#E15D33"/>
<stop offset="1" stop-color="#FFA37B"/>
</linearGradient>
<linearGradient id="paint2_linear_12_337" x1="19" y1="17" x2="32" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7F2EB" stop-opacity="0.6"/>
<stop offset="1" stop-color="#DDCAAD" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 4C0 1.79086 1.79086 0 4 0H20C23.3137 0 26 2.68629 26 6V26C26 28.2091 24.2091 30 22 30H4C1.79086 30 0 28.2091 0 26V4Z" fill="url(#paint0_linear_12_193)"/>
<path opacity="0.4" d="M5.97656 9.27344C5.49479 9.27344 5.11458 9.22266 4.83594 9.12109C4.55729 9.02214 4.35547 8.86589 4.23047 8.65234C4.10807 8.44141 4.04688 8.11719 4.04688 7.67969V6.97656C4.04688 6.50781 3.85286 6.27344 3.46484 6.27344V5.39844C3.85286 5.39844 4.04688 5.16146 4.04688 4.6875V4.03125C4.04688 3.57292 4.10677 3.23698 4.22656 3.02344C4.34896 2.80729 4.54818 2.64974 4.82422 2.55078C5.10286 2.44922 5.48698 2.39844 5.97656 2.39844V3.27344C5.76302 3.27344 5.60547 3.32161 5.50391 3.41797C5.40234 3.51432 5.35156 3.67839 5.35156 3.91016V4.46484C5.35156 4.81901 5.30339 5.10807 5.20703 5.33203C5.11068 5.55599 4.95312 5.72005 4.73438 5.82422V5.83984C4.95052 5.94401 5.10677 6.11198 5.20312 6.34375C5.30208 6.57552 5.35156 6.88021 5.35156 7.25781V7.75391C5.35156 7.98828 5.39974 8.15365 5.49609 8.25C5.59245 8.34896 5.7526 8.39844 5.97656 8.39844V9.27344Z" fill="white"/>
<path opacity="0.4" d="M14.4023 25.2734C14.0143 25.2734 13.8203 25.5104 13.8203 25.9844V26.6406C13.8203 27.099 13.7591 27.4349 13.6367 27.6484C13.5169 27.8646 13.3177 28.0221 13.0391 28.1211C12.763 28.2227 12.3802 28.2734 11.8906 28.2734V27.3984C12.1068 27.3984 12.2643 27.3503 12.3633 27.2539C12.4648 27.1576 12.5156 26.9935 12.5156 26.7617V26.207C12.5156 25.8555 12.5625 25.5677 12.6562 25.3438C12.7526 25.1198 12.9115 24.9544 13.1328 24.8477V24.832C12.9167 24.7253 12.7591 24.5547 12.6602 24.3203C12.5638 24.0859 12.5156 23.7839 12.5156 23.4141V22.9219C12.5156 22.6901 12.4688 22.5247 12.375 22.4258C12.2812 22.3242 12.1198 22.2734 11.8906 22.2734V21.3984C12.375 21.3984 12.7552 21.4492 13.0312 21.5508C13.3099 21.6497 13.5104 21.806 13.6328 22.0195C13.7578 22.2305 13.8203 22.5547 13.8203 22.9922V23.6953C13.8203 24.1641 14.0143 24.3984 14.4023 24.3984V25.2734Z" fill="white"/>
<path d="M20 0V0C23.3137 0 26 2.68629 26 6V6H20V0Z" fill="url(#paint1_linear_12_193)"/>
<path d="M6.84766 16H5.67969V15.4258H5.66406C5.39583 15.8737 4.9987 16.0977 4.47266 16.0977C4.08464 16.0977 3.77865 15.9883 3.55469 15.7695C3.33333 15.5482 3.22266 15.2539 3.22266 14.8867C3.22266 14.1107 3.68229 13.6628 4.60156 13.543L5.6875 13.3984C5.6875 12.9609 5.45052 12.7422 4.97656 12.7422C4.5 12.7422 4.04688 12.8841 3.61719 13.168V12.2383C3.78906 12.1497 4.02344 12.0716 4.32031 12.0039C4.61979 11.9362 4.89193 11.9023 5.13672 11.9023C6.27734 11.9023 6.84766 12.4714 6.84766 13.6094V16ZM5.6875 14.375V14.1055L4.96094 14.1992C4.5599 14.2513 4.35938 14.4323 4.35938 14.7422C4.35938 14.8828 4.40755 14.9987 4.50391 15.0898C4.60286 15.1784 4.73568 15.2227 4.90234 15.2227C5.13411 15.2227 5.32292 15.1432 5.46875 14.9844C5.61458 14.8229 5.6875 14.6198 5.6875 14.375Z" fill="white"/>
<path d="M21.3711 15.1641C21.0508 15.7865 20.5677 16.0977 19.9219 16.0977C19.4141 16.0977 19.0143 15.9141 18.7227 15.5469C18.431 15.1797 18.2852 14.7018 18.2852 14.1133C18.2852 13.4753 18.4544 12.9479 18.793 12.5312C19.1315 12.112 19.5859 11.9023 20.1562 11.9023C20.7995 11.9023 21.2344 12.1771 21.4609 12.7266H21.4805L21.6992 12H22.9453L22.082 14.0273C22.181 14.3971 22.2826 14.6641 22.3867 14.8281C22.4935 14.9896 22.6159 15.0703 22.7539 15.0703C22.8763 15.0703 22.9792 15.0495 23.0625 15.0078L23.0469 15.9531C22.875 16.0234 22.6784 16.0586 22.457 16.0586C22.1706 16.0586 21.9427 15.9896 21.7734 15.8516C21.6068 15.7109 21.4805 15.4818 21.3945 15.1641H21.3711ZM21.1055 13.9453C20.9544 13.2083 20.6901 12.8398 20.3125 12.8398C20.0651 12.8398 19.8711 12.9544 19.7305 13.1836C19.5898 13.4128 19.5195 13.6979 19.5195 14.0391C19.5195 14.3646 19.5755 14.6302 19.6875 14.8359C19.8021 15.0391 19.9674 15.1406 20.1836 15.1406C20.5534 15.1406 20.8411 14.8034 21.0469 14.1289L21.1055 13.9453Z" fill="white"/>
<rect opacity="0.3" x="9" y="13" width="3" height="1" fill="#FFFEFE"/>
<rect opacity="0.3" x="9" y="15" width="3" height="1" fill="#FFFEFE"/>
<path d="M14 13L16 14.5L14 16" stroke="white"/>
<g filter="url(#filter0_b_12_193)">
<rect x="18" y="16" width="14" height="10" rx="2" fill="#BBE3FF" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_12_193)">
<rect x="18.1" y="16.1" width="13.8" height="9.8" rx="1.9" stroke="url(#paint2_linear_12_193)" stroke-width="0.2"/>
</g>
<path d="M22.6099 23V21.6938H21.3989V23H20.3442V19.499H21.3989V20.7954H22.6099V19.499H23.6646V23H22.6099ZM27.2192 20.6538C27.2192 20.8931 27.1582 21.1055 27.0361 21.291C26.9157 21.4766 26.7432 21.6206 26.5186 21.7231C26.2939 21.8241 26.0327 21.8745 25.7349 21.8745H25.4126V23H24.3579V19.499H25.7935C26.2866 19.499 26.6471 19.5926 26.875 19.7798C27.1045 19.967 27.2192 20.2583 27.2192 20.6538ZM26.1035 20.6904C26.1035 20.5472 26.062 20.439 25.979 20.3657C25.896 20.2925 25.7739 20.2559 25.6128 20.2559H25.4126V21.1201H25.6494C25.9521 21.1201 26.1035 20.9769 26.1035 20.6904ZM30.9692 21.2397C30.9692 21.5913 30.8936 21.9062 30.7422 22.1846C30.5908 22.4613 30.3792 22.6769 30.1074 22.8315C29.8356 22.9845 29.5312 23.061 29.1943 23.061C28.8656 23.061 28.5661 22.987 28.2959 22.8389C28.0273 22.6891 27.8182 22.48 27.6685 22.2114C27.5187 21.9412 27.4438 21.6361 27.4438 21.2959C27.4438 20.9395 27.5195 20.6188 27.6709 20.334C27.8223 20.0492 28.0347 19.8294 28.3081 19.6748C28.5815 19.5186 28.8924 19.4404 29.2407 19.4404C29.576 19.4404 29.8755 19.5153 30.1392 19.665C30.4045 19.8132 30.6087 20.0256 30.752 20.3022C30.8968 20.5773 30.9692 20.8898 30.9692 21.2397ZM29.8511 21.269C29.8511 20.981 29.7957 20.7539 29.6851 20.5879C29.5744 20.4219 29.423 20.3389 29.231 20.3389C29.021 20.3389 28.8574 20.4186 28.7402 20.5781C28.623 20.7376 28.5645 20.9631 28.5645 21.2544C28.5645 21.5392 28.6222 21.7614 28.7378 21.9209C28.855 22.0804 29.0137 22.1602 29.2139 22.1602C29.3359 22.1602 29.4458 22.1243 29.5435 22.0527C29.6411 21.9811 29.7168 21.8786 29.7705 21.7451C29.8242 21.6117 29.8511 21.453 29.8511 21.269Z" fill="#1897FF"/>
<defs>
<filter id="filter0_b_12_193" x="14" y="12" width="22" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_193"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_193" result="shape"/>
</filter>
<filter id="filter1_b_12_193" x="10" y="8" width="30" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_193"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_193" result="shape"/>
</filter>
<linearGradient id="paint0_linear_12_193" x1="23" y1="28.125" x2="2.28188" y2="-0.358586" gradientUnits="userSpaceOnUse">
<stop stop-color="#4BA7F4"/>
<stop offset="1" stop-color="#68C2FF"/>
</linearGradient>
<linearGradient id="paint1_linear_12_193" x1="20" y1="6" x2="24.718" y2="2.45575" gradientUnits="userSpaceOnUse">
<stop stop-color="#3BA2F9"/>
<stop offset="1" stop-color="#68C2FF"/>
</linearGradient>
<linearGradient id="paint2_linear_12_193" x1="19" y1="17" x2="32" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#EBF2F7" stop-opacity="0.6"/>
<stop offset="1" stop-color="#ADC6DD" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.2" d="M3 4C3 1.79086 4.79086 0 7 0H23C26.3137 0 29 2.68629 29 6V26C29 28.2091 27.2091 30 25 30H7C4.79086 30 3 28.2091 3 26V4Z" fill="url(#paint0_linear_12_317)"/>
<path d="M0 4C0 1.79086 1.79086 0 4 0H20C23.3137 0 26 2.68629 26 6V26C26 28.2091 24.2091 30 22 30H4C1.79086 30 0 28.2091 0 26V4Z" fill="url(#paint1_linear_12_317)"/>
<path d="M20 0V0C23.3137 0 26 2.68629 26 6V6H20V0Z" fill="url(#paint2_linear_12_317)"/>
<path d="M10.0707 4.92929C10.0317 4.89024 9.96834 4.89024 9.92929 4.92929C9.89024 4.96834 9.89024 5.03166 9.92929 5.07071L10.0707 4.92929ZM17 12L16.7011 10.8846L15.8846 11.7011L17 12ZM9.92929 5.07071L16.2929 11.4343L16.4343 11.2929L10.0707 4.92929L9.92929 5.07071Z" fill="white"/>
<path d="M13 23L14.1154 22.7011L13.2989 21.8846L13 23ZM18.9293 16.9293L13.5657 22.2929L13.7071 22.4343L19.0707 17.0707L18.9293 16.9293Z" fill="white"/>
<path d="M18 15.1C18.0552 15.1 18.1 15.0552 18.1 15C18.1 14.9448 18.0552 14.9 18 14.9V15.1ZM13 15L14 15.5774V14.4226L13 15ZM18 14.9L13.9 14.9V15.1L18 15.1V14.9Z" fill="white"/>
<path d="M10 12L10.5774 11L9.42265 11L10 12ZM10 6L9.42265 7L10.5773 7L10 6ZM10.1 11.1L10.1 9.1875L9.9 9.1875L9.9 11.1L10.1 11.1ZM10.1 9.1875L10.1 6.9L9.9 6.9L9.9 9.1875L10.1 9.1875Z" fill="white"/>
<path d="M10 21L10.5774 20L9.42265 20L10 21ZM10 15L9.42265 16L10.5773 16L10 15ZM10.1 20.1L10.1 18.1875L9.9 18.1875L9.9 20.1L10.1 20.1ZM10.1 18.1875L10.1 15.9L9.9 15.9L9.9 18.1875L10.1 18.1875Z" fill="white"/>
<path d="M11 7.1C11.0552 7.1 11.1 7.05523 11.1 7C11.1 6.94477 11.0552 6.9 11 6.9V7.1ZM5 7V6.9H4.9V7H5ZM5 24H4.9V24.1H5V24ZM7 24L6 23.4226V24.5774L7 24ZM6.83333 23.9C6.7781 23.9 6.73333 23.9448 6.73333 24C6.73333 24.0552 6.7781 24.1 6.83333 24.1V23.9ZM6.5 24.1C6.55523 24.1 6.6 24.0552 6.6 24C6.6 23.9448 6.55523 23.9 6.5 23.9V24.1ZM6.16667 23.9C6.11144 23.9 6.06667 23.9448 6.06667 24C6.06667 24.0552 6.11144 24.1 6.16667 24.1V23.9ZM5.83333 24.1C5.88856 24.1 5.93333 24.0552 5.93333 24C5.93333 23.9448 5.88856 23.9 5.83333 23.9V24.1ZM5.5 23.9C5.44477 23.9 5.4 23.9448 5.4 24C5.4 24.0552 5.44477 24.1 5.5 24.1V23.9ZM5.16667 24.1C5.22189 24.1 5.26667 24.0552 5.26667 24C5.26667 23.9448 5.22189 23.9 5.16667 23.9V24.1ZM5.1 23.7976C5.1 23.7424 5.05523 23.6976 5 23.6976C4.94477 23.6976 4.9 23.7424 4.9 23.7976H5.1ZM4.9 23.3929C4.9 23.4481 4.94477 23.4929 5 23.4929C5.05523 23.4929 5.1 23.4481 5.1 23.3929H4.9ZM5.1 22.9881C5.1 22.9329 5.05523 22.8881 5 22.8881C4.94477 22.8881 4.9 22.9329 4.9 22.9881H5.1ZM4.9 22.5833C4.9 22.6386 4.94477 22.6833 5 22.6833C5.05523 22.6833 5.1 22.6386 5.1 22.5833H4.9ZM5.1 22.1786C5.1 22.1233 5.05523 22.0786 5 22.0786C4.94477 22.0786 4.9 22.1233 4.9 22.1786H5.1ZM4.9 21.7738C4.9 21.829 4.94477 21.8738 5 21.8738C5.05523 21.8738 5.1 21.829 5.1 21.7738H4.9ZM5.1 21.369C5.1 21.3138 5.05523 21.269 5 21.269C4.94477 21.269 4.9 21.3138 4.9 21.369H5.1ZM4.9 20.9643C4.9 21.0195 4.94477 21.0643 5 21.0643C5.05523 21.0643 5.1 21.0195 5.1 20.9643H4.9ZM5.1 20.5595C5.1 20.5043 5.05523 20.4595 5 20.4595C4.94477 20.4595 4.9 20.5043 4.9 20.5595H5.1ZM4.9 20.1548C4.9 20.21 4.94477 20.2548 5 20.2548C5.05523 20.2548 5.1 20.21 5.1 20.1548H4.9ZM5.1 19.75C5.1 19.6948 5.05523 19.65 5 19.65C4.94477 19.65 4.9 19.6948 4.9 19.75H5.1ZM4.9 19.3452C4.9 19.4005 4.94477 19.4452 5 19.4452C5.05523 19.4452 5.1 19.4005 5.1 19.3452H4.9ZM5.1 18.9405C5.1 18.8852 5.05523 18.8405 5 18.8405C4.94477 18.8405 4.9 18.8852 4.9 18.9405H5.1ZM4.9 18.5357C4.9 18.5909 4.94477 18.6357 5 18.6357C5.05523 18.6357 5.1 18.5909 5.1 18.5357H4.9ZM5.1 18.131C5.1 18.0757 5.05523 18.031 5 18.031C4.94477 18.031 4.9 18.0757 4.9 18.131H5.1ZM4.9 17.7262C4.9 17.7814 4.94477 17.8262 5 17.8262C5.05523 17.8262 5.1 17.7814 5.1 17.7262H4.9ZM5.1 17.3214C5.1 17.2662 5.05523 17.2214 5 17.2214C4.94477 17.2214 4.9 17.2662 4.9 17.3214H5.1ZM4.9 16.9167C4.9 16.9719 4.94477 17.0167 5 17.0167C5.05523 17.0167 5.1 16.9719 5.1 16.9167H4.9ZM5.1 16.5119C5.1 16.4567 5.05523 16.4119 5 16.4119C4.94477 16.4119 4.9 16.4567 4.9 16.5119H5.1ZM4.9 16.1071C4.9 16.1624 4.94477 16.2071 5 16.2071C5.05523 16.2071 5.1 16.1624 5.1 16.1071H4.9ZM5.1 15.7024C5.1 15.6472 5.05523 15.6024 5 15.6024C4.94477 15.6024 4.9 15.6472 4.9 15.7024H5.1ZM4.9 15.2976C4.9 15.3528 4.94477 15.3976 5 15.3976C5.05523 15.3976 5.1 15.3528 5.1 15.2976H4.9ZM5.1 14.8929C5.1 14.8376 5.05523 14.7929 5 14.7929C4.94477 14.7929 4.9 14.8376 4.9 14.8929H5.1ZM4.9 14.4881C4.9 14.5433 4.94477 14.5881 5 14.5881C5.05523 14.5881 5.1 14.5433 5.1 14.4881H4.9ZM5.1 14.0833C5.1 14.0281 5.05523 13.9833 5 13.9833C4.94477 13.9833 4.9 14.0281 4.9 14.0833H5.1ZM4.9 13.6786C4.9 13.7338 4.94477 13.7786 5 13.7786C5.05523 13.7786 5.1 13.7338 5.1 13.6786H4.9ZM5.1 13.2738C5.1 13.2186 5.05523 13.1738 5 13.1738C4.94477 13.1738 4.9 13.2186 4.9 13.2738H5.1ZM4.9 12.869C4.9 12.9243 4.94477 12.969 5 12.969C5.05523 12.969 5.1 12.9243 5.1 12.869H4.9ZM5.1 12.4643C5.1 12.4091 5.05523 12.3643 5 12.3643C4.94477 12.3643 4.9 12.4091 4.9 12.4643H5.1ZM4.9 12.0595C4.9 12.1148 4.94477 12.1595 5 12.1595C5.05523 12.1595 5.1 12.1148 5.1 12.0595H4.9ZM5.1 11.6548C5.1 11.5995 5.05523 11.5548 5 11.5548C4.94477 11.5548 4.9 11.5995 4.9 11.6548H5.1ZM4.9 11.25C4.9 11.3052 4.94477 11.35 5 11.35C5.05523 11.35 5.1 11.3052 5.1 11.25H4.9ZM5.1 10.8452C5.1 10.79 5.05523 10.7452 5 10.7452C4.94477 10.7452 4.9 10.79 4.9 10.8452H5.1ZM4.9 10.4405C4.9 10.4957 4.94477 10.5405 5 10.5405C5.05523 10.5405 5.1 10.4957 5.1 10.4405H4.9ZM5.1 10.0357C5.1 9.98048 5.05523 9.93571 5 9.93571C4.94477 9.93571 4.9 9.98048 4.9 10.0357H5.1ZM4.9 9.63095C4.9 9.68618 4.94477 9.73095 5 9.73095C5.05523 9.73095 5.1 9.68618 5.1 9.63095H4.9ZM5.1 9.22619C5.1 9.17096 5.05523 9.12619 5 9.12619C4.94477 9.12619 4.9 9.17096 4.9 9.22619H5.1ZM4.9 8.82142C4.9 8.87665 4.94477 8.92142 5 8.92142C5.05523 8.92142 5.1 8.87665 5.1 8.82142H4.9ZM5.1 8.41666C5.1 8.36143 5.05523 8.31666 5 8.31666C4.94477 8.31666 4.9 8.36143 4.9 8.41666H5.1ZM4.9 8.0119C4.9 8.06713 4.94477 8.1119 5 8.1119C5.05523 8.1119 5.1 8.06713 5.1 8.0119H4.9ZM5.1 7.60714C5.1 7.55191 5.05523 7.50714 5 7.50714C4.94477 7.50714 4.9 7.55191 4.9 7.60714H5.1ZM4.9 7.20238C4.9 7.2576 4.94477 7.30238 5 7.30238C5.05523 7.30238 5.1 7.2576 5.1 7.20238H4.9ZM5.1875 7.1C5.24273 7.1 5.2875 7.05523 5.2875 7C5.2875 6.94477 5.24273 6.9 5.1875 6.9V7.1ZM5.5625 6.9C5.50727 6.9 5.4625 6.94477 5.4625 7C5.4625 7.05523 5.50727 7.1 5.5625 7.1V6.9ZM5.9375 7.1C5.99273 7.1 6.0375 7.05523 6.0375 7C6.0375 6.94477 5.99273 6.9 5.9375 6.9V7.1ZM6.3125 6.9C6.25727 6.9 6.2125 6.94477 6.2125 7C6.2125 7.05523 6.25727 7.1 6.3125 7.1V6.9ZM6.6875 7.1C6.74273 7.1 6.7875 7.05523 6.7875 7C6.7875 6.94477 6.74273 6.9 6.6875 6.9V7.1ZM7.0625 6.9C7.00727 6.9 6.9625 6.94477 6.9625 7C6.9625 7.05523 7.00727 7.1 7.0625 7.1V6.9ZM7.4375 7.1C7.49273 7.1 7.5375 7.05523 7.5375 7C7.5375 6.94477 7.49273 6.9 7.4375 6.9V7.1ZM7.8125 6.9C7.75727 6.9 7.7125 6.94477 7.7125 7C7.7125 7.05523 7.75727 7.1 7.8125 7.1V6.9ZM8.1875 7.1C8.24273 7.1 8.2875 7.05523 8.2875 7C8.2875 6.94477 8.24273 6.9 8.1875 6.9V7.1ZM8.5625 6.9C8.50727 6.9 8.4625 6.94477 8.4625 7C8.4625 7.05523 8.50727 7.1 8.5625 7.1V6.9ZM8.9375 7.1C8.99273 7.1 9.0375 7.05523 9.0375 7C9.0375 6.94477 8.99273 6.9 8.9375 6.9V7.1ZM9.3125 6.9C9.25727 6.9 9.2125 6.94477 9.2125 7C9.2125 7.05523 9.25727 7.1 9.3125 7.1V6.9ZM9.6875 7.1C9.74273 7.1 9.7875 7.05523 9.7875 7C9.7875 6.94477 9.74273 6.9 9.6875 6.9V7.1ZM10.0625 6.9C10.0073 6.9 9.9625 6.94477 9.9625 7C9.9625 7.05523 10.0073 7.1 10.0625 7.1V6.9ZM10.4375 7.1C10.4927 7.1 10.5375 7.05523 10.5375 7C10.5375 6.94477 10.4927 6.9 10.4375 6.9V7.1ZM10.8125 6.9C10.7573 6.9 10.7125 6.94477 10.7125 7C10.7125 7.05523 10.7573 7.1 10.8125 7.1V6.9ZM6.5 23.9H6.16667V24.1H6.5V23.9ZM5.83333 23.9H5.5V24.1H5.83333V23.9ZM5.16667 23.9H5V24.1H5.16667V23.9ZM5.1 24V23.7976H4.9V24H5.1ZM5.1 23.3929V22.9881H4.9V23.3929H5.1ZM5.1 22.5833V22.1786H4.9V22.5833H5.1ZM5.1 21.7738V21.369H4.9V21.7738H5.1ZM5.1 20.9643V20.5595H4.9V20.9643H5.1ZM5.1 20.1548V19.75H4.9V20.1548H5.1ZM5.1 19.3452V18.9405H4.9V19.3452H5.1ZM5.1 18.5357V18.131H4.9V18.5357H5.1ZM5.1 17.7262V17.3214H4.9V17.7262H5.1ZM5.1 16.9167V16.5119H4.9V16.9167H5.1ZM5.1 16.1071V15.7024H4.9V16.1071H5.1ZM5.1 15.2976V14.8929H4.9V15.2976H5.1ZM5.1 14.4881V14.0833H4.9V14.4881H5.1ZM5.1 13.6786V13.2738H4.9V13.6786H5.1ZM5.1 12.869V12.4643H4.9V12.869H5.1ZM5.1 12.0595V11.6548H4.9V12.0595H5.1ZM5.1 11.25V10.8452H4.9V11.25H5.1ZM5.1 10.4405V10.0357H4.9V10.4405H5.1ZM5.1 9.63095V9.22619H4.9V9.63095H5.1ZM5.1 8.82142V8.41666H4.9V8.82142H5.1ZM5.1 8.0119V7.60714H4.9V8.0119H5.1ZM5.1 7.20238V7H4.9V7.20238H5.1ZM5 7.1H5.1875V6.9H5V7.1ZM5.5625 7.1H5.9375V6.9H5.5625V7.1ZM6.3125 7.1H6.6875V6.9H6.3125V7.1ZM7.0625 7.1H7.4375V6.9H7.0625V7.1ZM7.8125 7.1H8.1875V6.9H7.8125V7.1ZM8.5625 7.1H8.9375V6.9H8.5625V7.1ZM9.3125 7.1H9.6875V6.9H9.3125V7.1ZM10.0625 7.1H10.4375V6.9H10.0625V7.1ZM10.8125 7.1H11V6.9H10.8125V7.1Z" fill="white"/>
<circle cx="10" cy="6" r="3" fill="white"/>
<circle cx="10" cy="15" r="3" fill="#FFE0EF"/>
<circle cx="19" cy="15" r="3" fill="#FFB3C1"/>
<circle cx="10" cy="24" r="3" fill="#FFD0D9"/>
<g filter="url(#filter0_b_12_317)">
<rect x="17" y="16" width="15" height="10" rx="2" fill="#FFBBC7" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_12_317)">
<rect x="17.1" y="16.1" width="14.8" height="9.8" rx="1.9" stroke="url(#paint3_linear_12_317)" stroke-width="0.2"/>
</g>
<path d="M21.5498 23V21.0811C21.5498 20.9004 21.5555 20.7018 21.5669 20.4854L21.5742 20.3242H21.5449C21.4928 20.5993 21.453 20.7897 21.4253 20.8955L20.9102 23H19.9189L19.3794 20.9199C19.3647 20.8678 19.3265 20.6693 19.2646 20.3242H19.2354C19.2581 20.8711 19.2695 21.2129 19.2695 21.3496V23H18.3442V19.499H19.9238L20.4048 21.4009C20.4162 21.4399 20.4308 21.5197 20.4487 21.6401C20.4683 21.759 20.4805 21.8509 20.4854 21.916H20.5C20.5179 21.7679 20.5464 21.5929 20.5854 21.3911L21.0347 19.499H22.5898V23H21.5498ZM24.7773 23V22.6143H24.7676C24.6813 22.7331 24.6032 22.8201 24.5332 22.8755C24.4648 22.9308 24.3867 22.9756 24.2988 23.0098C24.2126 23.0439 24.1117 23.061 23.9961 23.061C23.7227 23.061 23.5143 22.9723 23.3711 22.7949C23.2279 22.6175 23.1562 22.3555 23.1562 22.0088V20.5H24.1963V21.9307C24.1963 22.1764 24.2882 22.2993 24.4722 22.2993C24.5731 22.2993 24.6488 22.266 24.6992 22.1992C24.7513 22.1325 24.7773 22.0381 24.7773 21.916V20.5H25.8174V23H24.7773ZM26.3154 23V19.2988H27.3555V23H26.3154ZM29.6187 22.9658C29.5715 22.9886 29.4941 23.0098 29.3867 23.0293C29.2793 23.0505 29.1499 23.061 28.9985 23.061C28.7088 23.061 28.4818 22.9813 28.3174 22.8218C28.1546 22.6623 28.0732 22.4352 28.0732 22.1406V21.2202H27.6802V20.5H28.0732V20.0093L29.0986 19.7261V20.5H29.6187V21.2202H29.0986V21.9697C29.0986 22.1895 29.1857 22.2993 29.3599 22.2993C29.4412 22.2993 29.5275 22.2814 29.6187 22.2456V22.9658ZM31.0444 19.8262C31.0444 19.9727 30.9907 20.0915 30.8833 20.1826C30.7775 20.2738 30.6375 20.3193 30.4634 20.3193C30.2941 20.3193 30.1549 20.2721 30.0459 20.1777C29.9385 20.0833 29.8848 19.9661 29.8848 19.8262C29.8848 19.6829 29.9368 19.5674 30.041 19.4795C30.1468 19.39 30.2876 19.3452 30.4634 19.3452C30.6375 19.3452 30.7775 19.39 30.8833 19.4795C30.9907 19.5674 31.0444 19.6829 31.0444 19.8262ZM29.9434 23V20.5H30.9834V23H29.9434Z" fill="#FF5477"/>
<defs>
<filter id="filter0_b_12_317" x="13" y="12" width="23" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_317"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_317" result="shape"/>
</filter>
<filter id="filter1_b_12_317" x="9" y="8" width="31" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_317"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_317" result="shape"/>
</filter>
<linearGradient id="paint0_linear_12_317" x1="26" y1="28.125" x2="5.28188" y2="-0.358586" gradientUnits="userSpaceOnUse">
<stop stop-color="#EA728B"/>
<stop offset="1" stop-color="#EE8798"/>
</linearGradient>
<linearGradient id="paint1_linear_12_317" x1="26" y1="27.6562" x2="3.79037" y2="-0.475949" gradientUnits="userSpaceOnUse">
<stop stop-color="#ED6E88"/>
<stop offset="1" stop-color="#EE8798"/>
<stop offset="1" stop-color="#F98FA0"/>
</linearGradient>
<linearGradient id="paint2_linear_12_317" x1="21" y1="6" x2="25.335" y2="1.87816" gradientUnits="userSpaceOnUse">
<stop offset="0.217949" stop-color="#F06280"/>
<stop offset="1" stop-color="#FF91A3"/>
</linearGradient>
<linearGradient id="paint3_linear_12_317" x1="18.0714" y1="17" x2="31.5517" y2="24.7771" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7EBEF" stop-opacity="0.6"/>
<stop offset="1" stop-color="#DDADC4" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 4C0 1.79086 1.79086 0 4 0H20C23.3137 0 26 2.68629 26 6V26C26 28.2091 24.2091 30 22 30H4C1.79086 30 0 28.2091 0 26V4Z" fill="url(#paint0_linear_12_283)"/>
<path d="M20 0V0C23.3137 0 26 2.68629 26 6V6H20V0Z" fill="url(#paint1_linear_12_283)"/>
<path d="M10.0707 4.92929C10.0317 4.89024 9.96834 4.89024 9.92929 4.92929C9.89024 4.96834 9.89024 5.03166 9.92929 5.07071L10.0707 4.92929ZM17 12L16.7011 10.8846L15.8846 11.7011L17 12ZM9.92929 5.07071L16.2929 11.4343L16.4343 11.2929L10.0707 4.92929L9.92929 5.07071Z" fill="white"/>
<path d="M13 23L14.1154 22.7011L13.2989 21.8846L13 23ZM18.9293 16.9293L13.5657 22.2929L13.7071 22.4343L19.0707 17.0707L18.9293 16.9293Z" fill="white"/>
<path d="M18 15.1C18.0552 15.1 18.1 15.0552 18.1 15C18.1 14.9448 18.0552 14.9 18 14.9V15.1ZM13 15L14 15.5774V14.4226L13 15ZM18 14.9L13.9 14.9V15.1L18 15.1V14.9Z" fill="white"/>
<path d="M10 12L10.5774 11L9.42265 11L10 12ZM10 6L9.42265 7L10.5773 7L10 6ZM10.1 11.1L10.1 9.1875L9.9 9.1875L9.9 11.1L10.1 11.1ZM10.1 9.1875L10.1 6.9L9.9 6.9L9.9 9.1875L10.1 9.1875Z" fill="white"/>
<path d="M10 21L10.5774 20L9.42265 20L10 21ZM10 15L9.42265 16L10.5773 16L10 15ZM10.1 20.1L10.1 18.1875L9.9 18.1875L9.9 20.1L10.1 20.1ZM10.1 18.1875L10.1 15.9L9.9 15.9L9.9 18.1875L10.1 18.1875Z" fill="white"/>
<path d="M11 7.1C11.0552 7.1 11.1 7.05523 11.1 7C11.1 6.94477 11.0552 6.9 11 6.9V7.1ZM5 7V6.9H4.9V7H5ZM5 24H4.9V24.1H5V24ZM7 24L6 23.4226V24.5774L7 24ZM6.83333 23.9C6.7781 23.9 6.73333 23.9448 6.73333 24C6.73333 24.0552 6.7781 24.1 6.83333 24.1V23.9ZM6.5 24.1C6.55523 24.1 6.6 24.0552 6.6 24C6.6 23.9448 6.55523 23.9 6.5 23.9V24.1ZM6.16667 23.9C6.11144 23.9 6.06667 23.9448 6.06667 24C6.06667 24.0552 6.11144 24.1 6.16667 24.1V23.9ZM5.83333 24.1C5.88856 24.1 5.93333 24.0552 5.93333 24C5.93333 23.9448 5.88856 23.9 5.83333 23.9V24.1ZM5.5 23.9C5.44477 23.9 5.4 23.9448 5.4 24C5.4 24.0552 5.44477 24.1 5.5 24.1V23.9ZM5.16667 24.1C5.22189 24.1 5.26667 24.0552 5.26667 24C5.26667 23.9448 5.22189 23.9 5.16667 23.9V24.1ZM5.1 23.7976C5.1 23.7424 5.05523 23.6976 5 23.6976C4.94477 23.6976 4.9 23.7424 4.9 23.7976H5.1ZM4.9 23.3929C4.9 23.4481 4.94477 23.4929 5 23.4929C5.05523 23.4929 5.1 23.4481 5.1 23.3929H4.9ZM5.1 22.9881C5.1 22.9329 5.05523 22.8881 5 22.8881C4.94477 22.8881 4.9 22.9329 4.9 22.9881H5.1ZM4.9 22.5833C4.9 22.6386 4.94477 22.6833 5 22.6833C5.05523 22.6833 5.1 22.6386 5.1 22.5833H4.9ZM5.1 22.1786C5.1 22.1233 5.05523 22.0786 5 22.0786C4.94477 22.0786 4.9 22.1233 4.9 22.1786H5.1ZM4.9 21.7738C4.9 21.829 4.94477 21.8738 5 21.8738C5.05523 21.8738 5.1 21.829 5.1 21.7738H4.9ZM5.1 21.369C5.1 21.3138 5.05523 21.269 5 21.269C4.94477 21.269 4.9 21.3138 4.9 21.369H5.1ZM4.9 20.9643C4.9 21.0195 4.94477 21.0643 5 21.0643C5.05523 21.0643 5.1 21.0195 5.1 20.9643H4.9ZM5.1 20.5595C5.1 20.5043 5.05523 20.4595 5 20.4595C4.94477 20.4595 4.9 20.5043 4.9 20.5595H5.1ZM4.9 20.1548C4.9 20.21 4.94477 20.2548 5 20.2548C5.05523 20.2548 5.1 20.21 5.1 20.1548H4.9ZM5.1 19.75C5.1 19.6948 5.05523 19.65 5 19.65C4.94477 19.65 4.9 19.6948 4.9 19.75H5.1ZM4.9 19.3452C4.9 19.4005 4.94477 19.4452 5 19.4452C5.05523 19.4452 5.1 19.4005 5.1 19.3452H4.9ZM5.1 18.9405C5.1 18.8852 5.05523 18.8405 5 18.8405C4.94477 18.8405 4.9 18.8852 4.9 18.9405H5.1ZM4.9 18.5357C4.9 18.5909 4.94477 18.6357 5 18.6357C5.05523 18.6357 5.1 18.5909 5.1 18.5357H4.9ZM5.1 18.131C5.1 18.0757 5.05523 18.031 5 18.031C4.94477 18.031 4.9 18.0757 4.9 18.131H5.1ZM4.9 17.7262C4.9 17.7814 4.94477 17.8262 5 17.8262C5.05523 17.8262 5.1 17.7814 5.1 17.7262H4.9ZM5.1 17.3214C5.1 17.2662 5.05523 17.2214 5 17.2214C4.94477 17.2214 4.9 17.2662 4.9 17.3214H5.1ZM4.9 16.9167C4.9 16.9719 4.94477 17.0167 5 17.0167C5.05523 17.0167 5.1 16.9719 5.1 16.9167H4.9ZM5.1 16.5119C5.1 16.4567 5.05523 16.4119 5 16.4119C4.94477 16.4119 4.9 16.4567 4.9 16.5119H5.1ZM4.9 16.1071C4.9 16.1624 4.94477 16.2071 5 16.2071C5.05523 16.2071 5.1 16.1624 5.1 16.1071H4.9ZM5.1 15.7024C5.1 15.6472 5.05523 15.6024 5 15.6024C4.94477 15.6024 4.9 15.6472 4.9 15.7024H5.1ZM4.9 15.2976C4.9 15.3528 4.94477 15.3976 5 15.3976C5.05523 15.3976 5.1 15.3528 5.1 15.2976H4.9ZM5.1 14.8929C5.1 14.8376 5.05523 14.7929 5 14.7929C4.94477 14.7929 4.9 14.8376 4.9 14.8929H5.1ZM4.9 14.4881C4.9 14.5433 4.94477 14.5881 5 14.5881C5.05523 14.5881 5.1 14.5433 5.1 14.4881H4.9ZM5.1 14.0833C5.1 14.0281 5.05523 13.9833 5 13.9833C4.94477 13.9833 4.9 14.0281 4.9 14.0833H5.1ZM4.9 13.6786C4.9 13.7338 4.94477 13.7786 5 13.7786C5.05523 13.7786 5.1 13.7338 5.1 13.6786H4.9ZM5.1 13.2738C5.1 13.2186 5.05523 13.1738 5 13.1738C4.94477 13.1738 4.9 13.2186 4.9 13.2738H5.1ZM4.9 12.869C4.9 12.9243 4.94477 12.969 5 12.969C5.05523 12.969 5.1 12.9243 5.1 12.869H4.9ZM5.1 12.4643C5.1 12.4091 5.05523 12.3643 5 12.3643C4.94477 12.3643 4.9 12.4091 4.9 12.4643H5.1ZM4.9 12.0595C4.9 12.1148 4.94477 12.1595 5 12.1595C5.05523 12.1595 5.1 12.1148 5.1 12.0595H4.9ZM5.1 11.6548C5.1 11.5995 5.05523 11.5548 5 11.5548C4.94477 11.5548 4.9 11.5995 4.9 11.6548H5.1ZM4.9 11.25C4.9 11.3052 4.94477 11.35 5 11.35C5.05523 11.35 5.1 11.3052 5.1 11.25H4.9ZM5.1 10.8452C5.1 10.79 5.05523 10.7452 5 10.7452C4.94477 10.7452 4.9 10.79 4.9 10.8452H5.1ZM4.9 10.4405C4.9 10.4957 4.94477 10.5405 5 10.5405C5.05523 10.5405 5.1 10.4957 5.1 10.4405H4.9ZM5.1 10.0357C5.1 9.98048 5.05523 9.93571 5 9.93571C4.94477 9.93571 4.9 9.98048 4.9 10.0357H5.1ZM4.9 9.63095C4.9 9.68618 4.94477 9.73095 5 9.73095C5.05523 9.73095 5.1 9.68618 5.1 9.63095H4.9ZM5.1 9.22619C5.1 9.17096 5.05523 9.12619 5 9.12619C4.94477 9.12619 4.9 9.17096 4.9 9.22619H5.1ZM4.9 8.82142C4.9 8.87665 4.94477 8.92142 5 8.92142C5.05523 8.92142 5.1 8.87665 5.1 8.82142H4.9ZM5.1 8.41666C5.1 8.36143 5.05523 8.31666 5 8.31666C4.94477 8.31666 4.9 8.36143 4.9 8.41666H5.1ZM4.9 8.0119C4.9 8.06713 4.94477 8.1119 5 8.1119C5.05523 8.1119 5.1 8.06713 5.1 8.0119H4.9ZM5.1 7.60714C5.1 7.55191 5.05523 7.50714 5 7.50714C4.94477 7.50714 4.9 7.55191 4.9 7.60714H5.1ZM4.9 7.20238C4.9 7.2576 4.94477 7.30238 5 7.30238C5.05523 7.30238 5.1 7.2576 5.1 7.20238H4.9ZM5.1875 7.1C5.24273 7.1 5.2875 7.05523 5.2875 7C5.2875 6.94477 5.24273 6.9 5.1875 6.9V7.1ZM5.5625 6.9C5.50727 6.9 5.4625 6.94477 5.4625 7C5.4625 7.05523 5.50727 7.1 5.5625 7.1V6.9ZM5.9375 7.1C5.99273 7.1 6.0375 7.05523 6.0375 7C6.0375 6.94477 5.99273 6.9 5.9375 6.9V7.1ZM6.3125 6.9C6.25727 6.9 6.2125 6.94477 6.2125 7C6.2125 7.05523 6.25727 7.1 6.3125 7.1V6.9ZM6.6875 7.1C6.74273 7.1 6.7875 7.05523 6.7875 7C6.7875 6.94477 6.74273 6.9 6.6875 6.9V7.1ZM7.0625 6.9C7.00727 6.9 6.9625 6.94477 6.9625 7C6.9625 7.05523 7.00727 7.1 7.0625 7.1V6.9ZM7.4375 7.1C7.49273 7.1 7.5375 7.05523 7.5375 7C7.5375 6.94477 7.49273 6.9 7.4375 6.9V7.1ZM7.8125 6.9C7.75727 6.9 7.7125 6.94477 7.7125 7C7.7125 7.05523 7.75727 7.1 7.8125 7.1V6.9ZM8.1875 7.1C8.24273 7.1 8.2875 7.05523 8.2875 7C8.2875 6.94477 8.24273 6.9 8.1875 6.9V7.1ZM8.5625 6.9C8.50727 6.9 8.4625 6.94477 8.4625 7C8.4625 7.05523 8.50727 7.1 8.5625 7.1V6.9ZM8.9375 7.1C8.99273 7.1 9.0375 7.05523 9.0375 7C9.0375 6.94477 8.99273 6.9 8.9375 6.9V7.1ZM9.3125 6.9C9.25727 6.9 9.2125 6.94477 9.2125 7C9.2125 7.05523 9.25727 7.1 9.3125 7.1V6.9ZM9.6875 7.1C9.74273 7.1 9.7875 7.05523 9.7875 7C9.7875 6.94477 9.74273 6.9 9.6875 6.9V7.1ZM10.0625 6.9C10.0073 6.9 9.9625 6.94477 9.9625 7C9.9625 7.05523 10.0073 7.1 10.0625 7.1V6.9ZM10.4375 7.1C10.4927 7.1 10.5375 7.05523 10.5375 7C10.5375 6.94477 10.4927 6.9 10.4375 6.9V7.1ZM10.8125 6.9C10.7573 6.9 10.7125 6.94477 10.7125 7C10.7125 7.05523 10.7573 7.1 10.8125 7.1V6.9ZM6.5 23.9H6.16667V24.1H6.5V23.9ZM5.83333 23.9H5.5V24.1H5.83333V23.9ZM5.16667 23.9H5V24.1H5.16667V23.9ZM5.1 24V23.7976H4.9V24H5.1ZM5.1 23.3929V22.9881H4.9V23.3929H5.1ZM5.1 22.5833V22.1786H4.9V22.5833H5.1ZM5.1 21.7738V21.369H4.9V21.7738H5.1ZM5.1 20.9643V20.5595H4.9V20.9643H5.1ZM5.1 20.1548V19.75H4.9V20.1548H5.1ZM5.1 19.3452V18.9405H4.9V19.3452H5.1ZM5.1 18.5357V18.131H4.9V18.5357H5.1ZM5.1 17.7262V17.3214H4.9V17.7262H5.1ZM5.1 16.9167V16.5119H4.9V16.9167H5.1ZM5.1 16.1071V15.7024H4.9V16.1071H5.1ZM5.1 15.2976V14.8929H4.9V15.2976H5.1ZM5.1 14.4881V14.0833H4.9V14.4881H5.1ZM5.1 13.6786V13.2738H4.9V13.6786H5.1ZM5.1 12.869V12.4643H4.9V12.869H5.1ZM5.1 12.0595V11.6548H4.9V12.0595H5.1ZM5.1 11.25V10.8452H4.9V11.25H5.1ZM5.1 10.4405V10.0357H4.9V10.4405H5.1ZM5.1 9.63095V9.22619H4.9V9.63095H5.1ZM5.1 8.82142V8.41666H4.9V8.82142H5.1ZM5.1 8.0119V7.60714H4.9V8.0119H5.1ZM5.1 7.20238V7H4.9V7.20238H5.1ZM5 7.1H5.1875V6.9H5V7.1ZM5.5625 7.1H5.9375V6.9H5.5625V7.1ZM6.3125 7.1H6.6875V6.9H6.3125V7.1ZM7.0625 7.1H7.4375V6.9H7.0625V7.1ZM7.8125 7.1H8.1875V6.9H7.8125V7.1ZM8.5625 7.1H8.9375V6.9H8.5625V7.1ZM9.3125 7.1H9.6875V6.9H9.3125V7.1ZM10.0625 7.1H10.4375V6.9H10.0625V7.1ZM10.8125 7.1H11V6.9H10.8125V7.1Z" fill="white"/>
<circle cx="10" cy="6" r="3" fill="white"/>
<circle cx="10" cy="15" r="3" fill="#FFF2E6"/>
<circle cx="19" cy="15" r="3" fill="#FFDEBF"/>
<circle cx="10" cy="24" r="3" fill="#FFEBB7"/>
<g filter="url(#filter0_b_12_283)">
<rect x="18" y="16" width="14" height="10" rx="2" fill="#FFE4BB" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_12_283)">
<rect x="18.1" y="16.1" width="13.8" height="9.8" rx="1.9" stroke="url(#paint2_linear_12_283)" stroke-width="0.2"/>
</g>
<path d="M22.7905 23L21.5552 21.3105C21.4575 21.1771 21.3778 21.0566 21.3159 20.9492H21.3062C21.3159 21.1217 21.3208 21.3154 21.3208 21.5303V23H20.3442V19.499H21.3403L22.5244 21.1055C22.5391 21.1266 22.557 21.1519 22.5781 21.1812C22.5993 21.2104 22.6204 21.2406 22.6416 21.2715C22.6628 21.3024 22.6823 21.3325 22.7002 21.3618C22.7197 21.3911 22.7344 21.4172 22.7441 21.4399H22.7539C22.7441 21.3683 22.7393 21.2446 22.7393 21.0688V19.499H23.7158V23H22.7905ZM26.6016 23L26.4478 22.3555H25.4028L25.2368 23H24.0967L25.3027 19.499H26.6113L27.7466 23H26.6016ZM25.9375 20.2607H25.9131C25.9098 20.2998 25.8984 20.3641 25.8789 20.4536C25.8594 20.5431 25.7609 20.9272 25.5835 21.606H26.2524L26.0083 20.6538C25.9741 20.5138 25.9505 20.3828 25.9375 20.2607ZM30.5884 21.9404C30.5884 22.1732 30.5257 22.3758 30.4004 22.5483C30.2767 22.7209 30.1025 22.8494 29.8779 22.9341C29.6533 23.0187 29.3831 23.061 29.0674 23.061C28.7012 23.061 28.3659 22.9992 28.0615 22.8755V21.916C28.208 22.0234 28.37 22.1105 28.5474 22.1772C28.7248 22.2424 28.89 22.2749 29.043 22.2749C29.1585 22.2749 29.248 22.2546 29.3115 22.2139C29.375 22.1715 29.4067 22.1105 29.4067 22.0308C29.4067 21.9738 29.3905 21.9242 29.3579 21.8818C29.327 21.8379 29.279 21.7972 29.2139 21.7598C29.1504 21.7223 29.0316 21.6711 28.8574 21.606C28.2943 21.3895 28.0127 21.0396 28.0127 20.5562C28.0127 20.2176 28.1413 19.9474 28.3984 19.7456C28.6556 19.5422 29.0007 19.4404 29.4336 19.4404C29.5557 19.4404 29.668 19.4453 29.7705 19.4551C29.873 19.4648 29.9658 19.4771 30.0488 19.4917C30.1335 19.5063 30.2515 19.534 30.4028 19.5747V20.4658C30.1082 20.3047 29.8185 20.2241 29.5337 20.2241C29.4165 20.2241 29.3221 20.2461 29.2505 20.29C29.1789 20.334 29.1431 20.3942 29.1431 20.4707C29.1431 20.5439 29.1715 20.605 29.2285 20.6538C29.2871 20.701 29.4084 20.7629 29.5923 20.8394C29.9552 20.9858 30.2116 21.1462 30.3613 21.3203C30.5127 21.4945 30.5884 21.7012 30.5884 21.9404Z" fill="#FD8516"/>
<defs>
<filter id="filter0_b_12_283" x="14" y="12" width="22" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_283"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_283" result="shape"/>
</filter>
<filter id="filter1_b_12_283" x="10" y="8" width="30" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_283"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_283" result="shape"/>
</filter>
<linearGradient id="paint0_linear_12_283" x1="23" y1="28.125" x2="2.28188" y2="-0.358586" gradientUnits="userSpaceOnUse">
<stop stop-color="#F3A340"/>
<stop offset="1" stop-color="#F5D44F"/>
</linearGradient>
<linearGradient id="paint1_linear_12_283" x1="21.5" y1="6" x2="25.1601" y2="2.74145" gradientUnits="userSpaceOnUse">
<stop stop-color="#F3A340"/>
<stop offset="1" stop-color="#F5D44F"/>
</linearGradient>
<linearGradient id="paint2_linear_12_283" x1="19" y1="17" x2="32" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7F2EB" stop-opacity="0.6"/>
<stop offset="1" stop-color="#DDCAAD" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="32" height="30" viewBox="0 0 32 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 4C0 1.79086 1.79086 0 4 0H20C23.3137 0 26 2.68629 26 6V26C26 28.2091 24.2091 30 22 30H4C1.79086 30 0 28.2091 0 26V4Z" fill="url(#paint0_linear_10_152)"/>
<path d="M15.2548 7.17079L10 15" stroke="white" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.50811 7.29235L11.3041 9.88507" stroke="white" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.5807 14.7076L13.5838 13.2223L13.3346 12.851L12.5869 11.737" stroke="white" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>
<ellipse cx="9.22236" cy="16.25" rx="1.22222" ry="1.25" transform="rotate(-180 9.22236 16.25)" stroke="white" stroke-width="1.7" stroke-linejoin="round"/>
<circle cx="15.2501" cy="16.25" r="1.25" transform="rotate(-180 15.2501 16.25)" stroke="white" stroke-width="1.7" stroke-linejoin="round"/>
<path opacity="0.4" d="M4.97656 10.2734C4.49479 10.2734 4.11458 10.2227 3.83594 10.1211C3.55729 10.0221 3.35547 9.86589 3.23047 9.65234C3.10807 9.44141 3.04688 9.11719 3.04688 8.67969V7.97656C3.04688 7.50781 2.85286 7.27344 2.46484 7.27344V6.39844C2.85286 6.39844 3.04688 6.16146 3.04688 5.6875V5.03125C3.04688 4.57292 3.10677 4.23698 3.22656 4.02344C3.34896 3.80729 3.54818 3.64974 3.82422 3.55078C4.10286 3.44922 4.48698 3.39844 4.97656 3.39844V4.27344C4.76302 4.27344 4.60547 4.32161 4.50391 4.41797C4.40234 4.51432 4.35156 4.67839 4.35156 4.91016V5.46484C4.35156 5.81901 4.30339 6.10807 4.20703 6.33203C4.11068 6.55599 3.95312 6.72005 3.73438 6.82422V6.83984C3.95052 6.94401 4.10677 7.11198 4.20312 7.34375C4.30208 7.57552 4.35156 7.88021 4.35156 8.25781V8.75391C4.35156 8.98828 4.39974 9.15365 4.49609 9.25C4.59245 9.34896 4.7526 9.39844 4.97656 9.39844V10.2734Z" fill="white"/>
<path opacity="0.4" d="M14.4023 24.2734C14.0143 24.2734 13.8203 24.5104 13.8203 24.9844V25.6406C13.8203 26.099 13.7591 26.4349 13.6367 26.6484C13.5169 26.8646 13.3177 27.0221 13.0391 27.1211C12.763 27.2227 12.3802 27.2734 11.8906 27.2734V26.3984C12.1068 26.3984 12.2643 26.3503 12.3633 26.2539C12.4648 26.1576 12.5156 25.9935 12.5156 25.7617V25.207C12.5156 24.8555 12.5625 24.5677 12.6562 24.3438C12.7526 24.1198 12.9115 23.9544 13.1328 23.8477V23.832C12.9167 23.7253 12.7591 23.5547 12.6602 23.3203C12.5638 23.0859 12.5156 22.7839 12.5156 22.4141V21.9219C12.5156 21.6901 12.4688 21.5247 12.375 21.4258C12.2812 21.3242 12.1198 21.2734 11.8906 21.2734V20.3984C12.375 20.3984 12.7552 20.4492 13.0312 20.5508C13.3099 20.6497 13.5104 20.806 13.6328 21.0195C13.7578 21.2305 13.8203 21.5547 13.8203 21.9922V22.6953C13.8203 23.1641 14.0143 23.3984 14.4023 23.3984V24.2734Z" fill="white"/>
<path d="M20 0V0C23.3137 0 26 2.68629 26 6V6H20V0Z" fill="url(#paint1_linear_10_152)"/>
<g filter="url(#filter0_b_10_152)">
<rect x="18" y="16" width="14" height="10" rx="2" fill="#85E9D1" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_10_152)">
<rect x="18.1" y="16.1" width="13.8" height="9.8" rx="1.9" stroke="url(#paint2_linear_10_152)" stroke-width="0.2"/>
</g>
<path d="M21 19L23.5 21L21 23" stroke="#1CB189"/>
<rect x="24.5" y="21.5" width="4" height="1" fill="#1CB189"/>
<defs>
<filter id="filter0_b_10_152" x="14" y="12" width="22" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_10_152"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_10_152" result="shape"/>
</filter>
<filter id="filter1_b_10_152" x="10" y="8" width="30" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_10_152"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_10_152" result="shape"/>
</filter>
<linearGradient id="paint0_linear_10_152" x1="23" y1="28.125" x2="2.28188" y2="-0.358586" gradientUnits="userSpaceOnUse">
<stop stop-color="#4AB598"/>
<stop offset="1" stop-color="#88DDC6"/>
</linearGradient>
<linearGradient id="paint1_linear_10_152" x1="21" y1="5.5" x2="25.8153" y2="1.47546" gradientUnits="userSpaceOnUse">
<stop stop-color="#4AB598"/>
<stop offset="1" stop-color="#88DDC6"/>
</linearGradient>
<linearGradient id="paint2_linear_10_152" x1="19" y1="17" x2="32" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#EBF7F4" stop-opacity="0.6"/>
<stop offset="1" stop-color="#ADDDD0" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="34" height="28" viewBox="0 0 34 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 4C0 1.79086 1.79086 0 4 0H22C25.3137 0 28 2.68629 28 6V24C28 26.2091 26.2091 28 24 28H4C1.79086 28 0 26.2091 0 24V4Z" fill="url(#paint0_linear_12_217)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.3043 13.6296C9.58997 13.8127 8.82187 13.9042 8.00002 13.9042C7.17818 13.9042 6.41005 13.8127 5.69571 13.6296C4.98135 13.4465 4.41785 13.1762 4.00519 12.8186V13.9042C4.00519 14.1979 4.18378 14.4704 4.54096 14.7216C4.89813 14.9727 5.38361 15.1717 5.9974 15.3186C6.61119 15.4655 7.27872 15.5389 8.00001 15.5389C8.7213 15.5389 9.38883 15.4655 10.0026 15.3186C10.6164 15.1717 11.1019 14.9727 11.4591 14.7216C11.8162 14.4704 11.9948 14.1979 11.9948 13.9042V12.8186C11.5822 13.1762 11.0187 13.4466 10.3043 13.6296ZM10.2991 16.0817C9.58478 16.2648 8.81668 16.3563 7.99483 16.3563C7.17299 16.3563 6.40486 16.2648 5.69052 16.0817C4.97616 15.8986 4.41266 15.6283 4 15.2707L4.00519 16.3563C4.00519 16.65 4.18378 16.9225 4.54096 17.1737C4.89813 17.4248 5.38361 17.6238 5.9974 17.7707C6.61119 17.9176 7.27872 17.991 8.00001 17.991C8.7213 17.991 9.38364 17.9176 9.99743 17.7707C10.6112 17.6238 11.0967 17.4248 11.4539 17.1737C11.8111 16.9225 11.9896 16.65 11.9896 16.3563V15.2707C11.577 15.6283 11.0135 15.8987 10.2991 16.0817ZM10.0026 9.22031C9.38884 9.07344 8.72131 9 8.00002 9C7.27873 9 6.6112 9.07344 5.99741 9.22031C5.38362 9.36717 4.89815 9.5662 4.54097 9.81736C4.18379 10.0685 4.0052 10.341 4.0052 10.6347V11.4521C4.0052 11.7458 4.18379 12.0183 4.54097 12.2694C4.89815 12.5206 5.38362 12.7196 5.99741 12.8665C6.6112 13.0134 7.27873 13.0868 8.00002 13.0868C8.72131 13.0868 9.38884 13.0134 10.0026 12.8665C10.6164 12.7196 11.1019 12.5206 11.4591 12.2694C11.8163 12.0183 11.9948 11.7458 11.9948 11.4521V10.6347C11.9948 10.341 11.8163 10.0685 11.4591 9.81736C11.1019 9.5662 10.6164 9.36717 10.0026 9.22031ZM10.3095 21.0907C9.59516 21.2737 8.82706 21.3653 8.00521 21.3653C7.18337 21.3653 6.41524 21.2737 5.70089 21.0907C4.98654 20.9076 4.42304 20.6373 4.01038 20.2797V21.3652C4.01038 21.659 4.18897 21.9314 4.54614 22.1826C4.90332 22.4338 5.3888 22.6328 6.00259 22.7797C6.61638 22.9265 7.28391 23 8.0052 23C8.72649 23 9.39402 22.9265 10.0078 22.7797C10.6216 22.6328 11.1071 22.4338 11.4643 22.1826C11.8214 21.9314 12 21.659 12 21.3652V20.2797C11.5874 20.6373 11.0238 20.9076 10.3095 21.0907ZM10.3043 18.6386C9.58997 18.8216 8.82187 18.9132 8.00002 18.9132C7.17818 18.9132 6.41005 18.8216 5.6957 18.6386C4.98135 18.4555 4.41785 18.1852 4.00519 17.8276L4.01038 18.9131C4.01038 19.2069 4.18897 19.4793 4.54614 19.7305C4.90332 19.9817 5.3888 20.1807 6.00259 20.3276C6.61638 20.4744 7.28391 20.5479 8.0052 20.5479C8.72649 20.5479 9.38883 20.4744 10.0026 20.3276C10.6164 20.1807 11.1019 19.9817 11.4591 19.7305C11.8162 19.4793 11.9948 19.2069 11.9948 18.9131V17.8276C11.5822 18.1852 11.0187 18.4555 10.3043 18.6386Z" fill="white"/>
<path d="M19.0001 18.9354C19.823 18.9354 20.5921 18.8542 21.3073 18.6916C22.0226 18.5291 22.5868 18.289 23 17.9715V18.9354C23 19.1963 22.8212 19.4382 22.4635 19.6612C22.1059 19.8843 21.6198 20.061 21.0052 20.1914C20.3907 20.3218 19.7223 20.3871 19.0001 20.3871C18.2779 20.3871 17.6095 20.3218 16.9949 20.1914C16.3803 20.061 15.8942 19.8843 15.5366 19.6612C15.179 19.4382 15.0001 19.1963 15.0001 18.9354V17.9715C15.4133 18.289 15.9776 18.529 16.6928 18.6916C17.4081 18.8542 18.1772 18.9354 19.0001 18.9354ZM19.0001 21.5484C19.823 21.5484 20.5921 21.4671 21.3073 21.3045C22.0226 21.142 22.5868 20.902 23 20.5844V21.5484C23 21.8092 22.8212 22.0511 22.4635 22.2742C22.1059 22.4972 21.6198 22.674 21.0052 22.8044C20.3907 22.9348 19.7223 23 19.0001 23C18.2779 23 17.6095 22.9348 16.9949 22.8044C16.3803 22.674 15.8942 22.4972 15.5366 22.2742C15.179 22.0511 15.0001 21.8092 15.0001 21.5484V20.5844C15.4133 20.9019 15.9776 21.142 16.6928 21.3045C17.4081 21.4671 18.1772 21.5484 19.0001 21.5484Z" fill="white"/>
<path d="M19 14C19.7222 14 20.3906 14.0652 21.0051 14.1956C21.6197 14.3261 22.1058 14.5028 22.4635 14.7258C22.8211 14.9489 22.9999 15.1908 22.9999 15.4516V16.1775C22.9999 16.4383 22.8211 16.6802 22.4635 16.9033C22.1058 17.1263 21.6197 17.303 21.0051 17.4335C20.3906 17.5639 19.7222 17.6291 19 17.6291C18.2778 17.6291 17.6094 17.5639 16.9948 17.4335C16.3802 17.303 15.8941 17.1263 15.5365 16.9033C15.1789 16.6802 15 16.4383 15 16.1775V15.4516C15 15.1908 15.1789 14.9489 15.5365 14.7258C15.8941 14.5028 16.3802 14.3261 16.9948 14.1956C17.6094 14.0652 18.2778 14 19 14Z" fill="white"/>
<g filter="url(#filter0_b_12_217)">
<rect x="20" y="14" width="14" height="10" rx="2" fill="#C5BBFF" fill-opacity="0.44"/>
</g>
<g filter="url(#filter1_b_12_217)">
<rect x="20.1" y="14.1" width="13.8" height="9.8" rx="1.9" stroke="url(#paint1_linear_12_217)" stroke-width="0.2"/>
</g>
<path d="M27.25 17L29.25 19M29.25 19L27.25 21M29.25 19H24.25" stroke="#4F39FF"/>
<circle cx="16" cy="9" r="3" fill="#DBD8FF" fill-opacity="0.4"/>
<circle cx="16" cy="9" r="2.9" stroke="white" stroke-opacity="0.2" stroke-width="0.2"/>
<path opacity="0.4" d="M15.3164 10.6367C15.0326 10.6367 14.8262 10.5846 14.6973 10.4805C14.5684 10.3763 14.5039 10.1908 14.5039 9.92383V9.45508C14.5039 9.21549 14.4049 9.0957 14.207 9.0957V8.73633C14.4049 8.73633 14.5039 8.61198 14.5039 8.36328V7.92773C14.5039 7.65951 14.5677 7.47135 14.6953 7.36328C14.8229 7.25391 15.0299 7.19922 15.3164 7.19922V7.56445C15.1081 7.56445 15.0039 7.67773 15.0039 7.9043V8.32031C15.0039 8.63281 14.9036 8.83008 14.7031 8.91211V8.91992C14.9036 9.00065 15.0039 9.20052 15.0039 9.51953V9.91992C15.0039 10.0475 15.028 10.138 15.0762 10.1914C15.1257 10.2448 15.2057 10.2715 15.3164 10.2715V10.6367ZM17.8535 9.0957C17.6543 9.0957 17.5547 9.21745 17.5547 9.46094V9.91211C17.5547 10.1868 17.4909 10.3763 17.3633 10.4805C17.237 10.5846 17.0312 10.6367 16.7461 10.6367V10.2715C16.8555 10.2715 16.9349 10.2448 16.9844 10.1914C17.0339 10.1393 17.0586 10.0501 17.0586 9.92383V9.50781C17.0586 9.19661 17.1582 9.00195 17.3574 8.92383V8.91602C17.1582 8.83398 17.0586 8.63021 17.0586 8.30469V7.9043C17.0586 7.67773 16.9544 7.56445 16.7461 7.56445V7.19922C17.0299 7.19922 17.2357 7.25391 17.3633 7.36328C17.4909 7.47135 17.5547 7.6569 17.5547 7.91992V8.36719C17.5547 8.61328 17.6543 8.73633 17.8535 8.73633V9.0957Z" fill="white"/>
<defs>
<filter id="filter0_b_12_217" x="16" y="10" width="22" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="2"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_217"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_217" result="shape"/>
</filter>
<filter id="filter1_b_12_217" x="12" y="6" width="30" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feGaussianBlur in="BackgroundImage" stdDeviation="4"/>
<feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_12_217"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_12_217" result="shape"/>
</filter>
<linearGradient id="paint0_linear_12_217" x1="3" y1="1.5" x2="20.6116" y2="30.5677" gradientUnits="userSpaceOnUse">
<stop stop-color="#8075FA"/>
<stop offset="1" stop-color="#5141D6"/>
</linearGradient>
<linearGradient id="paint1_linear_12_217" x1="21" y1="15" x2="34" y2="22" gradientUnits="userSpaceOnUse">
<stop stop-color="#EBEBF7" stop-opacity="0.6"/>
<stop offset="1" stop-color="#AEADDD" stop-opacity="0.12"/>
</linearGradient>
</defs>
</svg>
<svg width="52" height="40" viewBox="0 0 52 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="52" height="40" rx="4" fill="#4154B3"/>
<path d="M-6.78884e-06 3.99924C-5.28388e-06 1.79011 1.79085 0 3.99999 0H48C50.2091 0 52 1.79086 52 4V9C52 9 14 9 0 9C-6.90736e-06 7.50331 -7.9072e-06 5.6409 -6.78884e-06 3.99924Z" fill="#374BAE"/>
<rect x="4" y="13" width="44" height="22" rx="2" fill="white"/>
<circle cx="5.5" cy="4.5" r="1.5" fill="#FF78B0"/>
<circle cx="11.5" cy="4.5" r="1.5" fill="#FFC694"/>
<circle cx="17.5" cy="4.5" r="1.5" fill="#BCD0D1"/>
<circle cx="13" cy="20" r="5" fill="#4154B3"/>
<path d="M5 32C5 28.6863 7.68629 26 11 26H14C17.3137 26 20 28.6863 20 32V34C20 37.3137 17.3137 40 14 40H11C7.68629 40 5 37.3137 5 34V32Z" fill="#4154B3"/>
<rect x="14" y="32.2546" width="12" height="2" rx="1" transform="rotate(-43.4625 14 32.2546)" fill="#4154B3"/>
<rect x="28" y="20" width="3" height="11" fill="#68C0E5"/>
<rect x="34" y="16" width="3" height="15" fill="#68C0E5"/>
<rect x="40" y="23" width="3" height="8" fill="#68C0E5"/>
</svg>
<svg width="52" height="40" viewBox="0 0 52 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="52" height="40" rx="4" fill="#4154B3"/>
<path d="M-6.78884e-06 3.99924C-5.28388e-06 1.79011 1.79085 0 3.99999 0H48C50.2091 0 52 1.79086 52 4V9C52 9 14 9 0 9C-6.90736e-06 7.50331 -7.9072e-06 5.6409 -6.78884e-06 3.99924Z" fill="#374BAE"/>
<rect x="4" y="13" width="25" height="10" rx="2" fill="#A3DAF8"/>
<rect x="33" y="13" width="15" height="23" rx="2" fill="white"/>
<rect x="4" y="27" width="25" height="9" rx="2" fill="#FDDE83"/>
<circle cx="5.5" cy="4.5" r="1.5" fill="#FF78B0"/>
<circle cx="11.5" cy="4.5" r="1.5" fill="#FFC694"/>
<circle cx="17.5" cy="4.5" r="1.5" fill="#BCD0D1"/>
</svg>
QuickStart
==========
Installation
------------
Currently, NNI supports running on Linux, macOS and Windows. Ubuntu 16.04 or higher, macOS 10.14.1, and Windows 10.1809 are tested and supported. Simply run the following ``pip install`` in an environment that has ``python >= 3.6``.
Linux and macOS
^^^^^^^^^^^^^^^
.. code-block:: bash
python3 -m pip install --upgrade nni
Windows
^^^^^^^
.. code-block:: bash
python -m pip install --upgrade nni
.. Note:: For Linux and macOS, ``--user`` can be added if you want to install NNI in your home directory, which does not require any special privileges.
.. Note:: If there is an error like ``Segmentation fault``, please refer to the :doc:`FAQ <FAQ>`.
"Hello World" example on MNIST
------------------------------
NNI is a toolkit to help users run automated machine learning experiments. It can automatically do the cyclic process of getting hyperparameters, running trials, testing results, and tuning hyperparameters. Here, we'll show how to use NNI to help you find the optimal hyperparameters on the MNIST dataset.
Here is an example script to train a CNN on the MNIST dataset **without NNI**:
.. code-block:: python
def main(args):
# load data
train_loader = torch.utils.data.DataLoader(datasets.MNIST(...), batch_size=args['batch_size'], shuffle=True)
test_loader = torch.tuils.data.DataLoader(datasets.MNIST(...), batch_size=1000, shuffle=True)
# build model
model = Net(hidden_size=args['hidden_size'])
optimizer = optim.SGD(model.parameters(), lr=args['lr'], momentum=args['momentum'])
# train
for epoch in range(10):
train(args, model, device, train_loader, optimizer, epoch)
test_acc = test(args, model, device, test_loader)
print(test_acc)
print('final accuracy:', test_acc)
if __name__ == '__main__':
params = {
'batch_size': 32,
'hidden_size': 128,
'lr': 0.001,
'momentum': 0.5
}
main(params)
The above code can only try one set of parameters at a time. If you want to tune the learning rate, you need to manually modify the hyperparameter and start the trial again and again.
NNI is born to help users tune jobs, whose working process is presented below:
.. code-block:: text
input: search space, trial code, config file
output: one optimal hyperparameter configuration
1: For t = 0, 1, 2, ..., maxTrialNum,
2: hyperparameter = chose a set of parameter from search space
3: final result = run_trial_and_evaluate(hyperparameter)
4: report final result to NNI
5: If reach the upper limit time,
6: Stop the experiment
7: return hyperparameter value with best final result
.. note::
If you want to use NNI to automatically train your model and find the optimal hyper-parameters, there are two approaches:
1. Write a config file and start the experiment from the command line.
2. Config and launch the experiment directly from a Python file
In the this part, we will focus on the first approach. For the second approach, please refer to `this tutorial <HowToLaunchFromPython.rst>`__\ .
Step 1: Modify the ``Trial`` Code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Modify your ``Trial`` file to get the hyperparameter set from NNI and report the final results to NNI.
.. code-block:: diff
+ import nni
def main(args):
# load data
train_loader = torch.utils.data.DataLoader(datasets.MNIST(...), batch_size=args['batch_size'], shuffle=True)
test_loader = torch.tuils.data.DataLoader(datasets.MNIST(...), batch_size=1000, shuffle=True)
# build model
model = Net(hidden_size=args['hidden_size'])
optimizer = optim.SGD(model.parameters(), lr=args['lr'], momentum=args['momentum'])
# train
for epoch in range(10):
train(args, model, device, train_loader, optimizer, epoch)
test_acc = test(args, model, device, test_loader)
- print(test_acc)
+ nni.report_intermediate_result(test_acc)
- print('final accuracy:', test_acc)
+ nni.report_final_result(test_acc)
if __name__ == '__main__':
- params = {'batch_size': 32, 'hidden_size': 128, 'lr': 0.001, 'momentum': 0.5}
+ params = nni.get_next_parameter()
main(params)
*Example:* :githublink:`mnist.py <examples/trials/mnist-pytorch/mnist.py>`
Step 2: Define the Search Space
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Define a ``Search Space`` in a YAML file, including the ``name`` and the ``distribution`` (discrete-valued or continuous-valued) of all the hyperparameters you want to search.
.. code-block:: yaml
searchSpace:
batch_size:
_type: choice
_value: [16, 32, 64, 128]
hidden_size:
_type: choice
_value: [128, 256, 512, 1024]
lr:
_type: choice
_value: [0.0001, 0.001, 0.01, 0.1]
momentum:
_type: uniform
_value: [0, 1]
*Example:* :githublink:`config_detailed.yml <examples/trials/mnist-pytorch/config_detailed.yml>`
You can also write your search space in a JSON file and specify the file path in the configuration. For detailed tutorial on how to write the search space, please see `here <SearchSpaceSpec.rst>`__.
Step 3: Config the Experiment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In addition to the search_space defined in the `step2 <step-2-define-the-search-space>`__, you need to config the experiment in the YAML file. It specifies the key information of the experiment, such as the trial files, tuning algorithm, max trial number, and max duration, etc.
.. code-block:: yaml
experimentName: MNIST # An optional name to distinguish the experiments
trialCommand: python3 mnist.py # NOTE: change "python3" to "python" if you are using Windows
trialConcurrency: 2 # Run 2 trials concurrently
maxTrialNumber: 10 # Generate at most 10 trials
maxExperimentDuration: 1h # Stop generating trials after 1 hour
tuner: # Configure the tuning algorithm
name: TPE
classArgs: # Algorithm specific arguments
optimize_mode: maximize
trainingService: # Configure the training platform
platform: local
Experiment config reference could be found `here <../reference/experiment_config.rst>`__.
.. _nniignore:
.. Note:: If you are planning to use remote machines or clusters as your training service, to avoid too much pressure on network, NNI limits the number of files to 2000 and total size to 300MB. If your codeDir contains too many files, you can choose which files and subfolders should be excluded by adding a ``.nniignore`` file that works like a ``.gitignore`` file. For more details on how to write this file, see the `git documentation <https://git-scm.com/docs/gitignore#_pattern_format>`__.
*Example:* :githublink:`config_detailed.yml <examples/trials/mnist-pytorch/config_detailed.yml>` and :githublink:`.nniignore <examples/trials/mnist-pytorch/.nniignore>`
All the code above is already prepared and stored in :githublink:`examples/trials/mnist-pytorch/<examples/trials/mnist-pytorch>`.
Step 4: Launch the Experiment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Linux and macOS
***************
Run the **config_detailed.yml** file from your command line to start the experiment.
.. code-block:: bash
nnictl create --config nni/examples/trials/mnist-pytorch/config_detailed.yml
Windows
*******
Change ``python3`` to ``python`` of the ``trialCommand`` field in the **config_detailed.yml** file, and run the **config_detailed.yml** file from your command line to start the experiment.
.. code-block:: bash
nnictl create --config nni\examples\trials\mnist-pytorch\config_detailed.yml
.. Note:: ``nnictl`` is a command line tool that can be used to control experiments, such as start/stop/resume an experiment, start/stop NNIBoard, etc. Click :doc:`here <../reference/nnictl>` for more usage of ``nnictl``.
Wait for the message ``INFO: Successfully started experiment!`` in the command line. This message indicates that your experiment has been successfully started. And this is what we expect to get:
.. code-block:: text
INFO: Starting restful server...
INFO: Successfully started Restful server!
INFO: Setting local config...
INFO: Successfully set local config!
INFO: Starting experiment...
INFO: Successfully started experiment!
-----------------------------------------------------------------------
The experiment id is egchD4qy
The Web UI urls are: [Your IP]:8080
-----------------------------------------------------------------------
You can use these commands to get more information about the experiment
-----------------------------------------------------------------------
commands description
1. nnictl experiment show show the information of experiments
2. nnictl trial ls list all of trial jobs
3. nnictl top monitor the status of running experiments
4. nnictl log stderr show stderr log content
5. nnictl log stdout show stdout log content
6. nnictl stop stop an experiment
7. nnictl trial kill kill a trial job by id
8. nnictl --help get help information about nnictl
-----------------------------------------------------------------------
If you prepared ``trial``\ , ``search space``\ , and ``config`` according to the above steps and successfully created an NNI job, NNI will automatically tune the optimal hyper-parameters and run different hyper-parameter sets for each trial according to the defined search space. You can see its progress through the WebUI clearly.
Step 5: View the Experiment
^^^^^^^^^^^^^^^^^^^^^^^^^^^
After starting the experiment successfully, you can find a message in the command-line interface that tells you the ``Web UI url`` like this:
.. code-block:: text
The Web UI urls are: [Your IP]:8080
Open the ``Web UI url`` (Here it's: ``[Your IP]:8080``\ ) in your browser, you can view detailed information about the experiment and all the submitted trial jobs as shown below. If you cannot open the WebUI link in your terminal, please refer to the `FAQ <FAQ.rst#could-not-open-webui-link>`__.
View Overview Page
******************
Information about this experiment will be shown in the WebUI, including the experiment profile and search space message. NNI also supports downloading this information and the parameters through the **Experiment summary** button.
.. image:: ../../img/webui-img/full-oview.png
:target: ../../img/webui-img/full-oview.png
:alt: overview
View Trials Detail Page
***********************
You could see the best trial metrics and hyper-parameter graph in this page. And the table content includes more columns when you click the button ``Add/Remove columns``.
.. image:: ../../img/webui-img/full-detail.png
:target: ../../img/webui-img/full-detail.png
:alt: detail
View Experiments Management Page
********************************
On the ``All experiments`` page, you can see all the experiments on your machine.
.. image:: ../../img/webui-img/managerExperimentList/expList.png
:target: ../../img/webui-img/managerExperimentList/expList.png
:alt: Experiments list
For more detailed usage of WebUI, please refer to `this doc <./WebUI.rst>`__.
Related Topic
-------------
* `How to debug? <HowToDebug.rst>`__
* `How to write a trial? <../TrialExample/Trials.rst>`__
* `How to try different Tuners? <../Tuner/BuiltinTuner.rst>`__
* `How to try different Assessors? <../Assessor/BuiltinAssessor.rst>`__
* `How to run an experiment on the different training platforms? <../training_services.rst>`__
* `How to use Annotation? <AnnotationSpec.rst>`__
* `How to use the command line tool nnictl? <Nnictl.rst>`__
* `How to launch Tensorboard on WebUI? <Tensorboard.rst>`__
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