From ef57ca08ee507902a9b2fbb4dbcc4ca110d84cd3 Mon Sep 17 00:00:00 2001 From: Leonard Lausen Date: Mon, 10 Feb 2020 18:15:50 +0000 Subject: [PATCH 01/22] 0.9.0 stable version --- src/gluonnlp/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gluonnlp/__init__.py b/src/gluonnlp/__init__.py index b290a18f73..c5b681afda 100644 --- a/src/gluonnlp/__init__.py +++ b/src/gluonnlp/__init__.py @@ -32,7 +32,7 @@ from . import initializer from .vocab import Vocab -__version__ = '0.9.0.dev' +__version__ = '0.9.0' __all__ = ['data', 'model', From 6520c72fde2a4c0c5c363c529e5bcb14adbdb31e Mon Sep 17 00:00:00 2001 From: Haibin Lin Date: Tue, 25 Feb 2020 10:25:27 -0800 Subject: [PATCH 02/22] [CI] Update MXNet master version tested on CI (#1113) (#1176) * [CI] Update MXNet master version tested on CI (#1113) * [CI] Update MXNet master version tested on CI * Disable horovod test on master * update link Co-authored-by: Leonard Lausen --- env/cpu/py3-master.yml | 2 +- env/gpu/py3-master.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/env/cpu/py3-master.yml b/env/cpu/py3-master.yml index fb5e80eb05..15d49c49fb 100644 --- a/env/cpu/py3-master.yml +++ b/env/cpu/py3-master.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - https://apache-mxnet.s3-us-west-2.amazonaws.com/dist/2020-01-26/dist/mxnet-1.6.0b20200126-py2.py3-none-manylinux1_x86_64.whl + - https://repo.mxnet.io/dist/python/cpu/mxnet-1.6.0-py2.py3-none-manylinux1_x86_64.whl - scipy==1.3.2 - regex==2019.11.1 - nltk==3.4.5 diff --git a/env/gpu/py3-master.yml b/env/gpu/py3-master.yml index ba9d87b68f..593614b587 100644 --- a/env/gpu/py3-master.yml +++ b/env/gpu/py3-master.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - https://apache-mxnet.s3-us-west-2.amazonaws.com/dist/2020-01-26/dist/mxnet_cu100-1.6.0b20200126-py2.py3-none-manylinux1_x86_64.whl + - https://repo.mxnet.io/dist/python/cu100/mxnet_cu100-1.6.0-py2.py3-none-manylinux1_x86_64.whl - scipy==1.3.2 - regex==2019.11.1 - nltk==3.4.5 From 50e52787c0f669a9e589f5eac1f33062ed59a8b9 Mon Sep 17 00:00:00 2001 From: Haibin Lin Date: Tue, 25 Feb 2020 13:34:07 -0800 Subject: [PATCH 03/22] [BUGFIX] Fix vocab determinism in py35 (#1166) (#1167) --- src/gluonnlp/vocab/vocab.py | 9 ++++++++- tests/unittest/test_vocab_embed.py | 9 +++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gluonnlp/vocab/vocab.py b/src/gluonnlp/vocab/vocab.py index bbc94dd343..5483b3b678 100644 --- a/src/gluonnlp/vocab/vocab.py +++ b/src/gluonnlp/vocab/vocab.py @@ -23,6 +23,7 @@ import json import uuid import warnings +import sys from typing import Dict, Hashable, List, Optional from mxnet import nd @@ -37,6 +38,9 @@ _DEPR_EOS = object() +def _is_py35(): + return sys.version_info[0] == 3 and sys.version_info[1] == 5 + class Vocab: """Indexing and embedding attachment for text tokens. @@ -222,7 +226,10 @@ def __init__(self, counter: Optional[Counter] = None, max_size: Optional[int] = # Handle special tokens special_tokens = [] - for special_token_name, special_token in kwargs.items(): + special_iter = kwargs.items() + if _is_py35(): + special_iter = sorted(special_iter) + for special_token_name, special_token in special_iter: # Test if kwarg specifies a special token if not special_token_name.endswith('_token'): raise ValueError('{} is invalid. Only keyword arguments ' diff --git a/tests/unittest/test_vocab_embed.py b/tests/unittest/test_vocab_embed.py index dd97e01048..1d775e59b0 100644 --- a/tests/unittest/test_vocab_embed.py +++ b/tests/unittest/test_vocab_embed.py @@ -1457,3 +1457,12 @@ def test_vocab_remapped_unknown_token_idx(unknown_token, padding_token, eos_toke v = Vocab(token_to_idx={unknown_token: 1}) assert v['UNKNOWNWORD'] == 1 + +def test_vocab_consistency(): + v0 = nlp.Vocab({'a': 1}, mask_token='[MASK]', sep_token='[SEP]', + cls_token='[CLS]') + v1 = nlp.Vocab({'a': 1}, mask_token='[MASK]', sep_token='[SEP]', + cls_token='[CLS]') + assert v0[v0.mask_token] == v1[v1.mask_token] + assert v0[v0.sep_token] == v1[v1.sep_token] + assert v0[v0.cls_token] == v1[v1.cls_token] From 27331cb245add08251ace74c1e6b3b8572fe36e9 Mon Sep 17 00:00:00 2001 From: Xinyu Chen Date: Wed, 26 Feb 2020 06:56:55 +0800 Subject: [PATCH 04/22] [DOC] add int8 command (#1174) --- scripts/bert/index.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/bert/index.rst b/scripts/bert/index.rst index 0b92d59b0f..09125cf607 100644 --- a/scripts/bert/index.rst +++ b/scripts/bert/index.rst @@ -223,22 +223,22 @@ version of `mxnet-mkl `__ | ++-----------+-------------------+---------------+---------------+---------+---------+------------------------------------------------------------------------------------------------------------------------+ +| SST-2 | bert_12_768_12 | 93.23 | 93.00 | | |`command `__ | ++-----------+-------------------+---------------+---------------+---------+---------+------------------------------------------------------------------------------------------------------------------------+ Question Answering ++++++++++++++++++ -+-----------+-------------------+---------+---------+---------+---------+-----+---------+ -| Dataset | Model | FP32 EM | INT8 EM | FP32 F1 | INT8 F1 | Log | Command | -+===========+===================+=========+=========+=========+=========+=====+=========+ -| SQuAD 1.1 | bert_12_768_12 | 81.18 | 80.32 | 88.58 | 88.10 | | | -+-----------+-------------------+---------+---------+---------+---------+-----+---------+ ++-----------+-------------------+---------+---------+---------+---------+----------------------------------------------------------------------------------------------------------------------------+ +| Dataset | Model | FP32 EM | INT8 EM | FP32 F1 | INT8 F1 | Command | ++===========+===================+=========+=========+=========+=========+============================================================================================================================+ +| SQuAD 1.1 | bert_12_768_12 | 81.18 | 80.32 | 88.58 | 88.10 |`command `__ | ++-----------+-------------------+---------+---------+---------+---------+----------------------------------------------------------------------------------------------------------------------------+ For all model settings above, we use a subset of evaluation dataset for calibration. From 3f7465ab5d0f926c2c6f424644daaa30668570ba Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Mon, 2 Mar 2020 20:44:45 -0800 Subject: [PATCH 05/22] bump up version --- src/gluonnlp/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gluonnlp/__init__.py b/src/gluonnlp/__init__.py index c5b681afda..6517c25e30 100644 --- a/src/gluonnlp/__init__.py +++ b/src/gluonnlp/__init__.py @@ -32,7 +32,7 @@ from . import initializer from .vocab import Vocab -__version__ = '0.9.0' +__version__ = '0.9.1' __all__ = ['data', 'model', From 639a103104364a6e159cff0e9809fadfa1adb4c7 Mon Sep 17 00:00:00 2001 From: "WANG, Chen" Date: Tue, 28 Apr 2020 23:39:08 +0800 Subject: [PATCH 06/22] Specify llvmlite version in CI environment (#1213) --- ci/batch/docker/Dockerfile | 2 +- env/cpu/py3.yml | 3 ++- env/docker/py3.yml | 3 ++- env/gpu/py3.yml | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ci/batch/docker/Dockerfile b/ci/batch/docker/Dockerfile index 8cc64125b5..7122a7e013 100644 --- a/ci/batch/docker/Dockerfile +++ b/ci/batch/docker/Dockerfile @@ -16,7 +16,7 @@ FROM nvidia/cuda:10.1-cudnn7-devel-ubuntu18.04 libxft-dev &&\ rm -rf /var/lib/apt/lists/* - RUN curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ + RUN curl -o ~/miniconda.sh -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ chmod +x ~/miniconda.sh && \ ~/miniconda.sh -b -p /opt/conda && \ rm ~/miniconda.sh && \ diff --git a/env/cpu/py3.yml b/env/cpu/py3.yml index 77a649b07c..8f79d31f5b 100644 --- a/env/cpu/py3.yml +++ b/env/cpu/py3.yml @@ -17,6 +17,7 @@ dependencies: - ipython - ipykernel - numba==0.47 + - llvmlite==0.31.0 - https://github.com/szha/mx-theme/tarball/master - seaborn - jieba @@ -32,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - https://lausen-public.s3.amazonaws.com/mxnet_cu100-1.6.0b20200125-py2.py3-none-manylinux1_x86_64.whl + - mxnet==1.6.0 - scipy==1.3.2 - regex==2019.11.1 - nltk==3.4.5 diff --git a/env/docker/py3.yml b/env/docker/py3.yml index 2c8b532186..33b0e57c47 100644 --- a/env/docker/py3.yml +++ b/env/docker/py3.yml @@ -17,6 +17,7 @@ dependencies: - ipython - ipykernel - numba==0.47 + - llvmlite==0.31.0 - https://github.com/szha/mx-theme/tarball/master - seaborn - jieba @@ -32,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - https://lausen-public.s3.amazonaws.com/mxnet_cu100-1.6.0b20200125-py2.py3-none-manylinux1_x86_64.whl + - mxnet-cu101==1.6.0 - scipy==1.3.2 - regex==2019.11.1 - nltk==3.4.5 diff --git a/env/gpu/py3.yml b/env/gpu/py3.yml index 1ed92f3fa5..4bdf4bfe01 100644 --- a/env/gpu/py3.yml +++ b/env/gpu/py3.yml @@ -17,6 +17,7 @@ dependencies: - ipython - ipykernel - numba==0.47 + - llvmlite==0.31.0 - https://github.com/szha/mx-theme/tarball/master - seaborn - jieba @@ -32,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - https://lausen-public.s3.amazonaws.com/mxnet_cu100-1.6.0b20200125-py2.py3-none-manylinux1_x86_64.whl + - mxnet-cu101==1.6.0 - scipy==1.3.2 - regex==2019.11.1 - nltk==3.4.5 From 9e356b35849f0dc4fac6c7b6b2de7fc72df2d7e1 Mon Sep 17 00:00:00 2001 From: Leonard Lausen Date: Fri, 1 May 2020 14:20:44 -0700 Subject: [PATCH 07/22] Fix layer_norm_eps in BERTEncoder (#1214) --- src/gluonnlp/model/bert.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gluonnlp/model/bert.py b/src/gluonnlp/model/bert.py index 022d1103b2..876749f8d2 100644 --- a/src/gluonnlp/model/bert.py +++ b/src/gluonnlp/model/bert.py @@ -318,11 +318,12 @@ def __init__(self, *, num_layers=2, units=512, hidden_size=2048, self._output_attention = output_attention self._output_all_encodings = output_all_encodings self._dropout = dropout + self._layer_norm_eps = layer_norm_eps with self.name_scope(): if dropout: self.dropout_layer = nn.Dropout(rate=dropout) - self.layer_norm = nn.LayerNorm(in_channels=units, epsilon=1e-12) + self.layer_norm = nn.LayerNorm(in_channels=units, epsilon=self._layer_norm_eps) self.position_weight = self.params.get('position_weight', shape=(max_length, units), init=weight_initializer) self.transformer_cells = nn.HybridSequential() @@ -550,7 +551,7 @@ def _get_decoder(self, units, vocab_size, embed, prefix): decoder = nn.HybridSequential(prefix=prefix) decoder.add(nn.Dense(units, flatten=False)) decoder.add(GELU()) - decoder.add(nn.LayerNorm(in_channels=units, epsilon=1e-12)) + decoder.add(nn.LayerNorm(in_channels=units, epsilon=self.encoder._layer_norm_eps)) decoder.add(nn.Dense(vocab_size, flatten=False, params=embed.collect_params())) assert decoder[3].weight == list(embed.collect_params().values())[0], \ 'The weights of word embedding are not tied with those of decoder' From bf148841856b96bdd62f2f580737605d767afbbb Mon Sep 17 00:00:00 2001 From: Karthikeyan Singaravelan Date: Tue, 5 May 2020 00:25:39 +0530 Subject: [PATCH 08/22] Fix deprecation warnings due to invalid escape sequences. (#1219) --- ci/batch/submit-job.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/batch/submit-job.py b/ci/batch/submit-job.py index ec99e44f47..5c48ab901c 100644 --- a/ci/batch/submit-job.py +++ b/ci/batch/submit-job.py @@ -92,7 +92,7 @@ def main(): spin = ['-', '/', '|', '\\', '-', '/', '|', '\\'] logGroupName = '/aws/batch/job' - jobName = re.sub('[^A-Za-z0-9_\-]', '', args.name)[:128] # Enforce AWS Batch jobName rules + jobName = re.sub(r'[^A-Za-z0-9_\-]', '', args.name)[:128] # Enforce AWS Batch jobName rules jobQueue = args.job_queue jobDefinition = args.job_definition command = args.command.split() From 6ee8f02b200f30625d5e929fbde36154873bd4f7 Mon Sep 17 00:00:00 2001 From: Haibin Lin Date: Fri, 8 May 2020 09:53:32 -0700 Subject: [PATCH 09/22] [BUGFIX] remove wd from squad (#1223) Co-authored-by: Lin --- scripts/bert/finetune_squad.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/bert/finetune_squad.py b/scripts/bert/finetune_squad.py index f53d867b37..c2497005ff 100644 --- a/scripts/bert/finetune_squad.py +++ b/scripts/bert/finetune_squad.py @@ -421,7 +421,7 @@ def train(): log.info('Start Training') - optimizer_params = {'learning_rate': lr, 'wd': 0.01} + optimizer_params = {'learning_rate': lr} param_dict = net.collect_params() if args.comm_backend == 'horovod': trainer = hvd.DistributedTrainer(param_dict, optimizer, optimizer_params) From 87ebe0506dbda33f6e827f612def1a334e73c681 Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Tue, 12 May 2020 17:58:34 +0900 Subject: [PATCH 10/22] add KoBERT tutorial added kobert_naver_movie for KoBERT tutorial. --- .../sentiment_analysis/bert-sentence-pair.png | Bin 0 -> 114561 bytes .../examples/sentiment_analysis/bert_fig2.png | Bin 0 -> 37520 bytes docs/examples/sentiment_analysis/index.rst | 6 + .../sentiment_analysis/kobert_naver_movie.md | 308 ++++++++++++++++++ 4 files changed, 314 insertions(+) create mode 100644 docs/examples/sentiment_analysis/bert-sentence-pair.png create mode 100644 docs/examples/sentiment_analysis/bert_fig2.png create mode 100644 docs/examples/sentiment_analysis/kobert_naver_movie.md diff --git a/docs/examples/sentiment_analysis/bert-sentence-pair.png b/docs/examples/sentiment_analysis/bert-sentence-pair.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc37953f4a7229da1ea6e1050ac71ad035d58cc GIT binary patch literal 114561 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

&cIY|Cl)ci{F(+iB0m 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 AoBF-~S6kHV(GsHmLV_ra=Zapxs zGW5sUOwLvl$<=Rm2Ye^4PwOJ`F;%8CmPeb|Jo)=g4e1IEqauK%7ziybQtu!>;|Chc z&*M>ig-N1t<6uQ1q~uz7-SLru)2$9*W8^=>Ik}MWmy{kflZWEIPS#{UsFu%c!E|^e zD6%t*!N{(NM7u{q0i(B8Z&Ir3D>$H_R}wZYW|8H$7oG!#I=&x8&X9Jn6;_c)k|I#9 z@wuYpp>qeW+MywgkK=QRN4om`fScHnM4>AK0Eob=@-%=ShThF&bDOYN?a5gdMzZi) zzw|y3QG5`8QI=6LhTx|%(tmDqhnMN%i4>AVjHlQQE00oWcG{(Er9td2pGc@VYa1gP zgU-$58%S?4wd?1BsLc;I-LOc*n`p4lDIDZFRd>VNd3OlXBYio zPERjRQG$%Yy4HVm%d5UfNlG45!ih%f%jYu+_@V1@B^%Y7b!nV5f#7_hyEPO@@2UCc z>J5xJ14DH36%sLnhQnBO`{_3lw_Gx*`$Sue__P6)NtpXH=J(+A?qA;tLoUZqnSj)~ z%X#`;pp=Jt;DKoC!S3Zgp?F`$8mX?S(9_>o{90bw3&1aQ+XsB;;$-^=zUMthG~UMv zkkRH0+S{ByQ@_&&tc+@oTBx{U;&B6{T3d75_UoE7H|*O0hs-Sqq(cg$@j2?Zt5By7 zLy>6Vqq!{y!T9?l^p-dc7&I7}{mm;``i=tQ9O7ELHY#X?T~1Q$1flMF#4nytHKwtA z_U5Vy>!JvmLLKjF^tQEZ*m4u0dpPz)u20^^X=W*iRa0$|xq>wo6LyYIH+*Z6wgUb6 zTFb&o;)Yof#QS75ldRK{MaAmR=VY@UZNR+&q4M`Cf}p_FsCfR^8WYDGHU%WIt7h zqnue7bMm1Y!>rzk*d1EMYa3Xoer0rql=5l!sbJvOmzH;jm8EjLN`dh}S*|nubmEGb zad5i(iI7=*`~e-jpV3=SIe#fs9-u3U%sS{~CC{9qW`t5v;41n2^g*;4#|C$7<`3TD zANl>*D+S|ja!q)XWxA;{n@~1C#FP@WMx%Za1kh?JSy)j!eBk& z_A#Hc+7h&p`ewEsBZOBk?p`C!ChF^!f~{@6)G|afE;s$=gF8EG3o$2ZEfA>0#&9@j zMZR=Q{x0ug$)cB~OwlrfSFox)5IdhR%@l3b%N9{2xi1|L{^fIs01PL9G9s)L29xO; zy3(8ddq(%nD?10cb0vA|I$o75%x0U4Kr;?rU2UYR?@DXeiGjJ25F`}-jEd-X#gGu; z{TVGcbI)+CyIOxK#RjH)H}7}Nc)NiFh>tDNTVBPrqJ|e< zS<^dFI6ChwKyk))KK13AW0*{wI6s&k9mcN>&+y=FScg*>m(t726^Hh*Z9nkyP?9|1 zp}eNgcCx{_S-U{UE4j6w5eI7L*^6>ympA#;hm1^WhF{dzxd$1cE}mSRu-oXBE)1TYkq8c$jjON< z4@+R`eVh1R-hokcVgBe4fnN;=U&t*(G*4dsyn&#M>xEyHmxP*U_4s1IUjg{+bxr!L z)Cuxqq;F@V#4-0MjK}A+U!S#leabMNg z?r8qcFoFyyHZ;jDY1*_7r;yn(IPLSa;014Yy;oICMfyH(;Df~F2dEFBa3S8!d88x|h(bc=oG(uq zNpsvz7PTPd_4=gU108;=l5WEY7nQ(Q7b}=kclv;DL~R6FqRaqiB_dLAa|IFXG^`{p z9+G}GENp{3*X}+j%bTB06qa}#l4mi{IVvlISbTda;o2t&0pOSkf8sz+bk5Jl_Vdug} zh(@zvC)FKCQKCYIqU2#d@ZLWGphds6R4j1oHZe_IqX(lRoL!g?b8vYU{s)hf3~}Zj zE^cgB^&^Jq!lKx15*W>aB5j8(EO035IPy^$KvecqKx&ll?BZe+gTU!{MKw`E9pVkR0sc_uOHa z(<^=uGr>!{1_&$dt2)$(YbA=h5NrAz(kvL4}FC(zF;W4Bv&i1_FaLbMKGTyte- zP?J_wu?;^FoY-=i>A;z!6@C2#;)HXx%3Nf}Qqq)yN#Gkoz`20qL>I>>gNwDA5M=jmjgd8v{)*UulQ$cuP0j$;W=LZDq#W9ZzQt{UQGL@l7kNgn zGTKw%?6$_Irh9^dgL-)NrPtlet1n3uO{56$VvLqD)r3eJ+^f|%XXXhPP{7G{D{#ytCDv&&9N20Bn&QvKh zTN{MDlL7xF8C=`x5bS(}Ld)6mry_Qdt&9wq~{{a`Qca_G@U<` z-s%7x^yWc0{<~-pS}>@wh}@gPf1x8RBnUbRe6I`p3mrjAE@>XuPgQ%iNW&G5JZTZr zS#mfj0nl><@K8$$_EJldvKC3NUvl3%fvy%1NcmhBI_UD zhg%H#~p3C>JK_` zp2Xb@xIc|(_sc6)@^(#t}YrlCkumn3=sun3)!oSuj{k+7*zFC$T@YR)yKxL+> zUf9aYN}x^9HBckxBT#sX5yl{N9$_QIf+i2Z>Y|8A%n9aMZ_W~Q9%-{p}(E&adLQDW0X#ge|ZrmEj{ zut_q){F;(VvVX~f1j)cA8{HJe*z!{9H9E|y7GSU7*ROci?cnsLb!eaAy@EqRKG)H7 zHK3*Y`GIM^o}ZN+PItl{C*Abc>%9+Mom6w0-?*s}YP}Zb$8L;yRd`-4<~@EBoQz_zrMncx-k&IMEZ6Z(WO2yxdh>sL z=w|ho=O+VmBl@xY8fvCUfzxTGiHjkJKW)xKYpe~LG>Xe4oVV5=b(b=2KV2_3Xm%&F z@GTN21e+QYYn)NAT|k!MOuod=QI#^)QmdkfX9aa1So4WcaC3@FN@7f)&!O)$ zpNpT%Lb-aQC6;Q1Zs2mA>35>jZ-|a1OPKau)votdhlG_#?XX{Z<0+J?O~$dy(O*`$ zTkH*ILU-Q?Qk zi8dqKVx6eb4W#V6$d_uv=ev0D@eTJ?So#G&TZ^waf2NAj3gOi{%=Ydx{gM<$I zW5>CV&(C32brj$b5H;T8inv_WX#JzA0?>$ZMyT`K*PgBytlsC#xT|cmLIq)H^M2~n zxgzs-jxH`@btdEb7N7$A@wx*tB7zNJ@=yXz^HWv$co>#c2Ju+(G{k7p~P zpK8Ih@G?jZ5H}5bT?hoJ#XvPa7eN3!JB>~&ZHY0C!!Srl_zLdfupqs`iqMV z|G`8?|NMLxfn5ARhOvCt&w0wP+UVW&H4sx(T1JpOUYITnooud^?X8cFxs5^W4*NIy;!61)+%RP6Psho+fJLFFW#+w{w|P862v}Yl(^{$fH68> zYdLO=VPkybHAk{Bo`H%UC8k8u^SPhS69bZTNadcGn_Tl3#ZFyZbiHg`;IOxLLNZ{m9_FPS1U>2>MGqMi?pH$IJ@DJdf0;)O#L{t?_pw_}dFw@VcH@0;}X z3`cEBC&IhNv&W`br>*fhXelhW%fg;)S*%koi}(2R^7ORqn)oX2Z?RkC2i0GsY!r1m zx>5RsC)6kByT(=LnS?U=GWKL{Pnv&zk*^v*WhwPl7pf4hhM_>+evNrs_HZc;3~ysQ zryv`3+vxpd>1d-T6Y^z4D=XV+) zi46tpE;OFQXu8g5{Ll|9&VfjzE!95128~L!*hBqvr4?JRi87dp4B@ZH&8fT7qIbZO zxW?wgiwx$v>AvDULtiVJU;OEC>Xby1i#v{P@93D$)o_61fkS4arUmxs_>|eSU)^3y zn4yI~a&K-^03Hj!MB%Lz;7uE@%$diq*%TVbnSME$FN1O8UuiHZYmPlaWDlW&4Gc?a z3d2cJG#qp?f@}=woCErth8!3Y*MPmf7;XCc+1gE?Q3^;?*60ntUyi4-4X!rX)OfGM zzSeo6U87QyTBkpRcVs7Ywb{QzK8L^cUVZ;4eyNko;6wwx%j9AuJ=xefxrzdOrfb*e z%!YXp-6Qn+oVzpuRXRf(_@HH6AP^RAi} zK^Z&nA;PCG_VB+^W5^Vty;i|jSzn>ta+RZ|3b8QxH^4_xz!h~6Ufuu62`2_t-WrYqB z!Li@P1o0p@+F?~U>Kkkq%))UOl<&24=pEu)qiQQ_C+s1~%=L>U8Y3;gFRRv$KRcU; z6v^RXQo0oy<$yDQREi+j#yR7;jx1Qv+2eNr;!tIx^0>&&KeQDKZVhlO4`qiGE5 zTWAf{XTwdSeu9+4gpvTXVp=F+HCgLQ*y{VnE6YF^)w22Gc9`wunr~w%5LH1T;s#Y3#st>&@!s}$rORG0JkZuzRz}5Z^<45S+ES6W zXmrvlaygRvt>vab*82+GA3rtH7i32A5k5XQD$n;o*frRK9togmsSbqfUu-IOGV!UDU|5#1#zp2oIvO66TKGhlZ@1)GG>E`MR--wwkrBcVK|w*o z2AMQE_kQ=R6&oTTP&lhG;Mn{4`l$bU8TQ&nQ<}2iu#wpMK9$?8wmFm)wtrOFUk}fx z?hSls{3wb&&Gvow>(!4&6~vpRR+STBF?5FfoB1-ed7&&_(1O!){gju_jtL8g z@dCqI8~J+-E}9PG*>sbQUcKcqW6SVihbKRO_sdqE%^DIJ05)?&()I90qN^)149t zpIf0gv^qsc5`R{2U~q6*8_h7o#2yyBTOKMI?9fHa8v5?z>2+J;5@=2eNDv+EmFso} zqsy9PzGo##RQx1Owg!!b!Fr87z*$FvzK)$~H-LH1fozxDZlPIkD2^n&m8z&6rW^CO z=k?jIFDRGSds4h7Kuq`;f9^dy&(kWS*<0bT!shGUBjhXG@5^W!QOM>JgAUNpsj5*o zY@JllcIXm!P4>kCZektnb|cA3`G+1>m*wV8s)RYL zzxg_MA>xeL5M&o<2z)-9jKoWL?JF+kU@A$C#UVOgr3`!dOh}YIC`m`w`c}PxBR%m=z7Zr`%KiHzAqZ5B-%}^UvOym$MUjeF;6F zwUUcdOX)RJ3`2Gh!|nm@TC7BfXp-s*>Fj$I<4BGuJcrd%HJE7}JCoPr&{uBHNBN8j zl2eRbM3NS{1xL_S{9z2=azIJ7?3d})^L{FDUpn}eIDO#YW^XZmJRe%=u9f}>vXFRp zEH@_(9Zq1RYLeMNI#!kMn)B|PT&jfb4|^%&OEj@7uLK^5-OI6{^mnwu<8P}dKA%tb zsMH818%HIa-&k)ufiZWXbQPz|wL1^XU3r=fKd;7FpG`#(0W+HXyuLpc$~BHHe{*^~ zYU56UKvURyn+r~Ta&5R2$WwQs4bYbV(@cVY_(O8`kI%b6g&eN}h6ILG%jWCTjY6lV zTY#!ils*BS!igsIa)tm;M81GjPoK1e{!+EUF;j1?bgLzXJuzTB8dYe1C#ZQ^1tG1( z0&CZvO07~jjn!)IB>CjS`FyR!dmx0mi}v20gTvV5Xr^FKDnKSH#A_C0)1WS#9uten zF&$8_v#Wc31bGGp1+#zsK3Pi2JiIADyHTOVcIV)ZtSOr{`4VpGKUBsb(a_ayNKo}> zD7M6y-XP3W?yjVZqw>4l%>HkE=M7b5c6J5ua9RtJOv{#Gf4bqq)PHq7F||&Nk+tVb(6N z6a-p?(dF-tDJ$-+v^teNkAzo_k|pS_JzWpRzbf>Hf-Ca#(h0rK{)i)k+l@R9%4FWS zfr3LXo*cpE^iqhZl-S?fC{Y?5;`G*H(T_?s-V6;fqhsdu%zZ}h*xF1ZVEVsWb@PFUv{!76niwjj_ z{?8@QUHU>01T;Ek`oBoTaOzx#B=lBf<2BzNZ57G3GayJmC z!@>Xph>$QaMX*9m*6WHSI#S|u0|U@ZrW1Yr;TTEOXpjgb zYZchpdh=OjiKNhD(rhF?cleJowWjtK)PD<=T%QQMeenN}5(EGuN+#R?JACl3XhB^C z0HpH?)dBw(&Y(<*76gwI z1cHW`)G|s^#nLH^>dm%bf!tCxE!}c3s z#UZhK+*5bHKU=hWJ~4)pjC(W+=I|%c>d@tOZBm@nB=nYKzx#kF$LD@bI`j zSwtj}j2Hh+In?;{bdXi!e73?oJeizgJdutil|(B7q6#840O7-2l#HZUN6*z zvR_pC78fx_ljwqzlGFslFK>h)Q4PiNB#k>Y#^Y3uR-5PwrBnQKpKiXlsiD_VcF_jH zyWL=mO{5Ee&^CykEL4U=FqW5ZbGE|e^TwSYNem3n+k4mdzPpD<$l#4kWw9^>kp}<- z$7Q6*<_G}n@j^xT(4}oWohB;i8*qVa6aJc5cZC)vgCS%P!nf4p`S_P9x~^BnZ^RxZ zW1owZd7omA(Ioc(csyQV04zp*5XVCfvZvC0($)R8i%wv|S_u#M>*h!GF~c`P-~>zeUYs(_TWHKpX-qe?tHEI)`MSwg)|&tn2{ z=;ZV`GJOU=KWF)=MsKe%EN)Cz*2HC{pQ+8*jK!@S3aI+ie750~CMBO)rgT}LQXeYe@8jEGPl;E!ju zqHlTeCq|8$orKz!=8`tm`-7)9L7@a2*9-{x8~n(bWC zkaKwr9Hg{4cH+6g{@#%XQmRz*Yyar*x*`2JSL|1`J%UHJ4mHM0U)`9^KU-h&6<6It zKAYi(ZFVeuN7n)-s+lHXLjVLc6t?->d!dP~euaQvAqgg~8FAdlqGkYiBx(Rer114e zs+0adw^HD-aMeBjyM~Oe1>ApX@c&!GR{WbxE5)iQb z1`SigPn|NqYIpju` zzV!INH6Yu7LBo7`p(ht#5}h!xjcJa)*RI2=4fzmH-Txdc*i^t<$JcuM`tT4go>#JBI z9EHn)L?ODm!tIpWk0?<}mx4P|-|={UjwEzrwOk8j&rG9J_zvQaw);XiWAa0r(KTHb#-e7 z5zjY`@5vWtg%f6%sZ~|tEh}s|QoHfgwHewf0r*IY%(o@70kFIv^GSfv!^dB1aX8pX zvE%&$00`HBLt&!!*@eES>T(Rxco!cVV!P;c%60m__PlKNK-6OZ`81y$VB@M#>Vn$s z>1*Wh?_d_I^rBN@`^q3-5VCzA1^N$AiNO+jm#;^94lg=IX8W%q zCu79brFA*X2!bv)5QG{EiLt_U7f-<< zWGt30d$_Q}qTg4-@d2%}2*c{Ci_A23ExXB@hHsGyWH25cM#dJZZX=ugS;On|34Gjl zep36KncG|1&(Z+cI8}$;_pR^5ctyNKp$`xq)?8PuX1vU+-TX>m?*;$z-9AAn(sp+f z>;*~t{U0yK7ue)bqyhyvIk(bsa8Y7`N&1q{L4giuEHzX zd6Q&>)gpot3v>3T_M;l2U$NGs$CEc`n``@z-T|1ql?Aa9Vm6tYj0-KlNIJNklL3;= zVHu@p=q*Zf5+o-Jy2A6W$ZBD>x3I^`PCo58%J@gT3O&0|lW=UnBoap7G;c-yeV&b& zRfOn+!ZsR^^ReDo;~OWkwNS#NZg;&N+)aQ>hsPr-&Pn&!!r@(<^-c1Jd7+X%lD8F^ zx7On)Jr!$Wa0s|f1GES-BsY8*=ZkK>9Q-h(cjO1WF8}Z(L~dNP3%>drv3rwNNa$Gh zCI_qmJ~MylNMU{bc1;FTSYiq!yAS4tQ+7W#{6v7q(`Q88B9uJRmYySEq0L1Wl->z4 zrm*&4X&3so^X$l@AS84;wO03k`djhe{pHA3=z=oKFOgXK>N)#vYDskoAN8uqcT}g4 zdiR(F9)xaN9!3FICR&8;ZpWN9xr4h1s_q$yfsRK_>zIzQaz4X36_E3focU7!O z=miLMIohi?otf6z!eW}5n6xUJYL7$11Pv{kXF7oYvrp*^*A&n`2<#NCG1@uJ&2rp^%DN?;=@qzbiqOP3N zC(m07(pWR!?o88#ZMm_?v+(#gI)xY<55BpgjR3O=@VC0zA3seYBP3CeS*K`|pprEU{Xwo(7 za^@smNR6JZVI6;aG}u%x|4ai)5)qX5o32S3q7nMHq!8F%Ko^7YG8FqfuKzb73!qrX zQC6?7E}y~qt%w=J2UmO)Z8S3Cy`12Qp3A1y@%NYz?+To39)X&sS(sw|kk( zRN5UD5tZsVIJf0F`^Aqpncf0AH3>J26jzXIAfyUFs-H%JcNDaNaOIT|kLrD>pa(T~ZR2VII#F>!$XIj6WABKc_&zWpoWyrL^A zP;Pv*cs5={bW`0s8}$k8MM)=YY-Ve3APlV3+utqFC zma#lG2(FZJ+e4vhhq_vIN>SY@b&Hp4(>PFX%ryDFrk%M%S!@^s4J*+D;id-icX7#T z8C*ZgmbDF4ln1TEbS?L;xD(S$+70w$%%p@jp90#N->3mc?GC_=S&Hd`os1IC0FS2g z%`SSF$H)DktTGc*?28%I=Nt&$r(2X=zGn2U2+gnvuhhJDAp+HR-mjzh#(iWNd{0aL zw0z!&Hx#TsUEl$x3;YE=DzQg91&?2#6iGML@$`JQgJ~=dvR4&dq%CzJ5&YWdEoWHQ zhSkCNyy6t{=_-Gk%Q!#r0Uu3ZrXBmK0hJ2i4y9qdVye7>8}Bf)@7$0os&dVyO-eA( zTZ?Mh~HHuu%N z)Q|6n49FPkBmLqz!7#k$ae4e*vYH%Qv?f5c~ zf$dw#adRnh|!ww-Tm}*n? ziA)=7l|MoT&+nwo)M&FegZ-5pw$gB}VUZ5(VrHEFyok0qP2&`4!%DPle>VHo8DfDY z)JFQ?v-UFgSDueY7z`k8Y>#eelFeCco1(`nYxcL1A`jnT9xj8v0{SJB;-C$+Xi*%V zZG=1<0cc8Jr7LUoDK1Ez{dYf;3LmwipBJ%kcdhUKB@HYG=0>Lb%8zgnR*skz3zL0Q z*!>J;waxf`C{O^(P2Vt`U?c4z@z;y!3kBs4^Of&Pm6Dj(Qa<(fAr~+O5F?(`I9cD$ z$wZk`15NsUL?NtGeXUsQ@j3AGV8eh>*Bprx8vYOn4K=O{1k4k+Jql0YTx8zCQB;Kn zl6Nhbi625PXdZf=EOxZeVp#=IMX`L2ZcU?9l}lrfm2&vNX+&KqCOkgT|lIz>*+u-A?HSgD+xEmy>?z}&qD1LrJ=6=_GVd^a8zlKVu zgcs!(Oe-|9cEoP~RMDn8IIK0!NFPuZ2U0364iwjM*TpPg7}As(Px4!By$x^jx( z-__A>eSki4NDzRRktaAzLK9zZ1n#sPSz`bIb5=$$7>G8zL*(qellt4QZy}|exKeFuk-V#0sZC!B zA6g=?cjWX>#-qsh(_Hg{benxYp>{W;Gm^)Qu5{CU6k#quC%eABl0XWp@|(-yFST&= ziuTm0PN&N1lBz)@zTNB#-%rsbvl?JAI-2=% zK5_T8U}^1IaUqbc3}__V{H5d6fBVXaIv(G_-+wSejFR2<9k*!2(76c2)2L$K{q**S zeqt2f@GLh`fZ7>KZNYq>u5#DfEuZ@sQu4Yu$rqLH zFHubZ?N2Od=@$Znc%{4*%I!^&S99|LTi5CK>pc7*_iduZc5*woH!v(uH^bymk*BG- zBnss(=XZiuJ-UnI3ebjx=#ObU_xHlazS|vZ=J~z zW{SV=X&JuFp*08#AflZV3v>_X>lP(^)xjjPT#G5wHXS?F#7-ryP|IZb8}uAg%|GJ( zMw(vvG*MIYHBW!eVd#}Ij<37>mZh+=^*VhkWzXY4FuI~hi<=PP(9wynrE&`_)nHOF%r?ufP-EqxN zk3tz|_H(@-oGQZ5HHd2DsMQW5zUfb}Ij)J0xk6-Q|B#vD(x3oY+;1LTmWE4hpVpq` zZeJz~@APR}wC8wEmz=SVM(6nVgo6#j`+P8>wo8@1&W#)dP&%!ae1vKx+ucTknY}C` zkAZfS30-?SK2yn>KPG}urSIOCUs*aKQ8$%&_EjHS9vqUf>6SA+Rl+;~itS*Rj5eeD zmfy`)uSl5fdV)nCRNDP!CJiTMk&^i!NEz}EEdBLKF1v3TaB8n6;*^EKUVYH)dgyUV zaoej2NM%QHpdG+&=eQRoZv7!uZ#j==^bp)%sXJ#y{gT6?Ir4NiIFLyO%3MhYjIQW!Ppp{owiE;&c-CX{ zW&29NF8yc(hFb(*Elx<;WjeoiHedT&wK`UcPkxV=Xw3S7N*U@^i%CUK@?tqkZ%9+F z01B(vZfx~3xII_L!y%RH!O%cUUdpM(tYn52NMg(VcpP`t%!cqTCk&cW;+qu@ykrw- z{@4ZDVjtIA#!LWFoN!bG7JAC2jI3FuU&>Q4ohG3b2*K2=^%2jFX@g^-ICOQj-N!wC z3~^Aeq*^GqB{g64-rxA@<-PnmBg=9_OF z0IC)t!C4tE7^~;QF@zJwJ5hoKVFZCqf&CKkHVsha_F2^Ul}Y|yjg46K#XMVA5{jdu!RY_G|?g+1Myc_uXijX?o5r{l!8x}1;& zANHc87zD!FyhEymXz!0laPcuekGly_VNB}-J^&TMmK{?jx00_44Q%KSQT!KBdGgkQ z5R5IWMBKaZxDG0VmwN8G=v_#fW}0*&E)@kkqT7Q~BA0_jiKv)n^RaZ}{QTULyN8?+ zA19=16Q8)qnnJ(ji)sUpf56!_=$b=AyEhbaVL#wRA4TmjxSt3!>lL_d2f%CBp$-&z z!59cSE$iI?Z417-RNJrdmq*aiy%=IPT9Q8h2(=;QldAdjFib&O9|oC=XYi65nEVYB ztcVD9j`~gH)T@yH^Ge%ip?7wF{a{5~o00Br?hKqJq(@1= zh|VW@b?zmS=aEJSqw@82_CF0Q_~=%gpFMCMdOFhB?3je17Ry`YsoQXZ{bxS)KjEM` zg6|AQ0Br{Gh)gr6=lx2GFc9xob@kG|{) zUwLb6VYTO>332wbBfmI3rgd`!FdsPRzqBf?_xh#iP+RMQ>g_ zWf}Na-6ziLTd!jHJFjb8UZ+5)t_GH(wm&swbCPyaZEvv!9NZhs^pV$O@mrsSr$dD2 zd8Qarl;Wb2kV9c(7*D84=PTe87(zf8G<#_7dfa^`LU#9bbgX53FzJ~X6FQ@RG6MMU zF_*hjjO88>HvrkAg*#Hax20Tq4BJXa}!UMWYnjvk99M%S_{W*$Ve*|H(9#X2-$9YdI=JY4h%R1Y0A zF2iWTtYv&WrkJXQf*?`;b?);@bGM9Z-xA~=3~r)miq&T1R*fvq)`*!U3!jn#0*)F# zN{Ips+`|2BY`q_d+fY*^ovLww*$M`ZJxS!tRK{U#D_0!y!yAWxga&o4hwSSv^OkA^ z9hMelY9ReP(oI66pQhzXNd-HnF;#GQF;D|VCGO5L{y!y5CZOZRl&vT&Wn$!>{tZxe zznTnXP-pS-2Zx16OIqRKM@t&iRe{AwUqKml!e4b7kq6eXYA8li-_s=wTysK202Q!G zahYY&djRUrYJb-}h-_7NS;R;`yW-cvI~eBkV~h949lq5J&(;+k&RkODr_~RO=fT+0n0RCtPRjlC#lA?$ z`{wa81dWXUld+W5lyXUo4`ZZWBf?GtvRer+yc)u%89*=kZ_Wtv6t{W6S9%#)U`mv( zlu#%512~1vZ~p)mRL^D>{V$CD9lPgvrwJ^O&>;Q^y-w=_cPGnfU&Q{@PfiCS`roaP z(f_eg_+JKs1wHUk`)n+Q_)mRlSs-*f!~z5NUIzA0=r*7pgJI)~Pi4ihag;3>oC&I_*B#EpX_Ol-PO&tzE$(a5WdR zCCU?G2k^`*g)lZr6S_YqTOLy(RC4ji$FsybDV3Pg7>sRQ*#<$OKuQrk5fM>& zU7vHYOJ6wJ6cAn|NqRo5o5)tC`mRk!ivjI{6gZ+rmnR-aWG|D&OIs()OmDHA1D0i; zND&`ky1cTo0|ZNYfpGrEgj|DoAokG;?Se-LoGIX8A z;RNYtvr>4&sV&bJP+iU7?&;aRv7uK4p2}et+50GkdNIh`(r@FoXkSIV?%&39(Zw~^2J*4jH z;@9J-6#G*h4#-j07l;}v{gajqZ;4Gz8L;i$d06?bAq+0aJ zUuA89?`3WBMzvIbu9itPp!pq++A)8sqmuv^ejwI&mG^M;er3+P!~1st&A(0D@%&T0 zngD1M`fPGJ?7sy+K->aLIkT&97V`d7hX4{#{@)wYQ<`GB@^A>4NE{AilaU_{*;t5eIPzbVzWKh`|J(FAS{2aK%aT$>rsGNt@B_`$1yXT9R*~{Z7!0;5&`1NG6f6iuV9xG` z1hU3@_ePSGSn$c-t8}}tAf8`d<^&Ms=>c$oQ+3=mX-Z?S<^qCL9Wnho}cZ++U z|H@w?6a?UliC@z|{#2vr>iSQqE^5eC$UmM8{FSh)Qg{{q?>5N)lG0_|Wc{~6@6ym9 zuB6+hf44C({HN4qI7ri&1N7Pp%vW5Js4Hzf>L+V4- ze@#yChc;w~FMm(ie^22DE+XK&>=VnED3T^ntBrfZj>iA90#=_D7$!ywOVs6IKLA-o zL}34#R&g|t5J~BhcqWv8gUF^Nm-~0v!os5OCA_A}mgtF~p(w!E$1YX)XQBnEL)$DC zHeGS1VgJ|TfJVZT1LKta4M!)_dsj&m&bZDKi;91;SNF%K>Mb2s)h9F2Yyy}m;+Akf+gc&>d|%Nb?$i5%k|c`_O^W@4%y^Y8)=_%I zZUr043*8A%KZ2@8{^Bh1#he`_Rz3PH$`+vZb}JfESm#jmEWEllgPr266(t3nlp!Sf zj^48!D2K;Y7jAFAdk9_M5cx_?(#M-qDMykP8i-Ng4F&-ktZ6Q2fZyjJ#T&M;vb+(f zAOWDRbeWg;_kxgS5Z!uw19?v|h{(<#-$tK6#9U9ilJBgpge1&n1U!8(jkMgl7c&qP zybbB$nKI&2WF!(ERC5m4{5FTvpxG&m!a_`yV9*ml3u!LTspccGg7q-Y`j?>SkshoH z?JtEpsK%z89-(hbf1r_h07&&o`^%k#I|atNX6PmCtcQyRYRs?g9<2^wv|F%)W1A$| zn@xr9p9|#6Z0K*#RKYmhNqH^ArL+Wrgxo?J#Cp}cl&m00kYZ~lbQPEMdL@?|l~YhL zZuY{|jk4O|0Rci^Mk?j;5YH0V0S&TyEQ=?)<8yWu6ETmt9t{z?|tRZz!>pLLpZ z6~$qa&xmnI0mC)@cBKSx#TaG$Am5RomkW;d=9Nr}+~07O7F&wBopx2ws5F&Tn)&Gx zo1UJ0s-Ise(|uGvl4Ys3v!ry71pZXT1vGR}HMLa?*8oV+9%?06WD}^&7Z6pVtjCXy z%B&Y+UMX>uHK=Y?YkB$`lTpFD#SCjR5b%%Qds0)@gQ%+ufWsNsUfo+tN?_wpEkX=^+37c0Af94b7{_)Ye+|kj>(6r= z=r7hPB3!=53F+*0uyOsOw@97f?&?k@YUiD}Utk>C{~n6Dz4p_AlY1dZJiEY-bOl+} zI}{~c6zMWqC}T5Q`2s_=>&!3i4OKB1w#c_RNfIH-|DE6K%a@h%j-+AV#zQM z-g^Vbw+-LVLK}rlI-GNIt^X5FJ-XxWWost`ij-PSC~^9AFph^yk`+7Hg{{Xh9Mb`| zla($?G0JqS7Qp6;Nhe)KJxv+FG)BJVU0%na;NENp+fk|Tfmg#RTmERcSTl$H8t~Xv zWlasQi-LH8@I3fsXR_WICV^rBZ6s)eP+voD_TeGGEi=AYy8>47>43lSlyu5^lG7Z6 zwlMZu1=H5{a|B%j98m=39;Mv3@M6UraNy=Ea5a%{Ah{i??d zvvwONQ+TnbY&I#m&I*mw7)1adcnsc^4QenDy&cZ|WS9n%xY8IZN7M z!b}yMz8-q^Ez3tBTn@*z8@1`uA% z_g*CHo}Gs_xFpI#S{we zCAZ~S&g~#rg}vq-$B9)wIK0U`1#Xmm3bDdEX*k}^hosUI^N8tvGC_moO3VO0x^1-d z`lYdqS;A@_e(j-xDyv<6pe4NYp?VqrybkfjAB{EFn(;(vt9W?MVNUF%EH|^b@l9Pe zaf!}!sriIT`?_?QwgYWN`1WY7X*9K#{Q055QeY>Nifx0cw90R#$PlYaGKJS)15bs4uToFk(fsE0mq zxw-25gIG}Rcx9QT@2xwXd--Baa9q66RE3L{`>BgLeq4LBBohe@Q*z&hUv_U$lqr$Z zlI1ADpP?249h^~^tqJ8ElNI4@H!?TaCROlK=8-%aoi>O4_^EJxrU`g8q*VQ0g*dFU z8$*Fwt9+Yop82nFctz~*Nz)~K9R$-53SxHH(CLzqOMf<$GCN|$RT0MXB0d_Qh7p@?9B)=8`odM>1=X5;sSPU%d1TC zoh`)LMQO7$K9h}))7(u8KHZv2rKI77_p?d zN8;CD0$RP-?XZ-}7jS)>$lR-r4JLMNTAe-D8<))&i z&M!B@wm7d__k`+?3&cn#w8_%@E<%|_lhb!0tb|c=^U3QPzabW#URPRb9+zY-mG0x( z$`zB#G+p|S?^68Cv;Y96&ICPq6o6MpT34j%-m0vr?W0I}i+0JX=m5X-GcNA#Y;KQy zYMOmA)6HOJrc5+7OhAm~2DHlzsh|<>v|Bx87e0gD+-F}mq>dIaPii=3o)+Ik1|`Z}v!#)B zMF+_6>1t7EbLcEFWVY5b7jton=#(kdywFUKjcudJ7y_#kp0B!Rv_D=+3R5x4v)K;Zvp5-5!T;geI7P z$!+Bd;61%D(^_jJVZ!-0S%MNju=aA5ZeKsBomFzfW)0O3m}ACGF(Q5}UG;&c?No2i z^{eIx{h841nnHZ{#?X`hob;Np4}P3Z7@~$+!QvKrYvNVyg#24lHcA{D*-iH#fjegm zP=4~zA1(0Wel;iEr3q?sRPXq;(l<_2;f$wMY4`TwC?Y}XRvxRO4&aXbt7{i?5C>;S z;9MLxbi5$ACnZ5mRW?Lpz^amDqhB7dfH57QC=;6gj4b#wY?Dz3>adZ zl-2oMn_g;#^Kg__qq_{y*k8=zEidnwtPP;8R|=xBQCoKImZyC2am}{vRXY+p?ynf5OwZLanFqT}uBIVf{?g^;@=5~*+jnm;~&I}Sh~yVMil{}l7fspe`? zMf+)ixBTe^KGLTWYPqQqWoz6S>YIq=LJYa#P`=reSGUmA_^tpbTZesPJ^V9M;0OB*9UA+ZhL2rsV+iv&%vzr1DZS${Ash ze1)0aK!!$&A`Sa}yHb!2hQrtl0&l!QYFM-Vvlko(_2z;XB2DW4E=c0{TfGc<)m-#9 zNihh=-oOqT3y}H@{LGkh*a#`FGr`NLlD5GPXV9UDu!v{u8Pf{FX9N^|P#J0dEk3lj zr9kEqsx|w1b(6EZcAx)EznE!AM)tqQ^ zR;yD3H<8rlP>?|2=7U!=BHB}Haf9>}h><`sFb0-pFvKj9WIm0LaSr zu!j?!k$nAD@x;^@Eyu(T-Wk3(^HR1@cRrQOM~Inu)0;R`#FBt@zWL3ui}+jNABhnQsmpR^p;VWiZxA*^>GzjD6Ww4ka+7ET$90O zS2gT4<@sD((ALzXI>-6MPL|xU#4r1H(*7{agdi;g`lD;^@O6A0!3n)KkDa^9I6S}U z^EUtzr~1V3#5EtU?{>tsujAP}QKV4V3`FI6d|6Ec1A+v0o6TC7J>zyv<8*g1)e7iP zxVCQ_%R9P;deEjtIYPRBAfL=)Oj)qP2)RNU9NNkhN_0=kpdN+fI3ynX)i@|+bjt^H z86$^M+2Z!4SXTf7>3VXf<_u#-J`qaEZJ#TCmr1<|b6^s4^gi91S;KG(jx|XsTof4} zz^hFYad+QpZuU*5{O;+8Y&ezafyv_XQI-$&iXi=&!FG<722YvPUcUWi4}2`jzmIQb zUlqFXfs%A{68)FLOnsF|8UAK(k)2_!2$8nM$;*dq-qGTd{>CtU^qZbK=rr1|~| zRLi;yF&DLAf~LB<)!&u0Wmpp`+1ZoXn+xs=4JZYcH(Q7=7A-iEUJEu$ejoct&(5~4{0w(P(R^XM`IpLNKWnONwX3m zd}0ItlYix$7?x#q+wHK*VSTw`dPI!Bi>4~@eg};kCy?=16WD%QX+hH*b;bQ@v`+1I zC_UM8ZJ*$t)YHdQQ<<*gbN)IyQtS;Hm|eWc0WU5l`O3quaSkEkgF>6y$BKbROwA z@1r@MRkx2C!FRAX;Su8=wB<@q^U|6Ug6>m4=q_nsS*06p)*NGX!{i73IM2cCxB!_#q(h_GeTDVDX+yp zwOqGbHPo-gA+sjMu}Dx0^YAq@_R(d8df=j+=3bb$w`1_7Hz8ty4m7T%HDPr z!`mIQ;fM=DE-`mVkRM_=cxFY!15+5U=kW{E39M{XAI2kL7y`tgklvnf2PxFDcLv#e zMKw}KY`aLpv^v?UJx+X#KLI|F!@*tpXi^0Oi0B^a(cx1SF>4oM7}OFXO5{|_=mkfR zXA}#TvK$d2b^Si+31b&pf6f%Sb4&Rtt5V{b8>sXZA3w&gido7y!&N_=x0SQ@pq zl}|~wrN!BDVe47x6>Ja#iKSW)gL0crw{0Tqc$9u>ZAMaMbOF)o*mz0HIo+rzAQ4LR z)$yWHUV<}<44-2urVmils@^JCP}_Vb9HlOA4=RTZO1#vSNvt2f>i8;y=Jp^gsUHw)?3H*>T}b1EvA zSCuKF$qAME4+$|lRy)-*wFc~M*JzOuFk;1aV%+$Cd6it6F6$hIB#<6oy{vq@Yh23g zrv8cX%Pk$_2h9?2dn*!Pt-*jzCH%3`JZDFAI~ z_R&yh`J9e56JfNZg&zFPgEk!f0S*7~H2L7XU&^(^O zR~c#~F3b=@{xZzO?E$bhhxY!$L&gri*x(?uy4a$%zHXv`V?N7DgPmQ6M}o6xb0wWg zmu)llgloc3FUO>6&hnxQj8|%RK&HnHWlioEQ#v0o13^y0I~9@+R?MJ6nt`Sy$1)0f z%T<6E=zg%+_F4~uJfT&TZdIQ_d{|DgWBtpW;B#wR-6CZx>O#{SWM^^*o|&UegU#7NcV$ACJ%_XyIjpr> zxlAiQQuiZU*yT=G6I~wuhS_vYa^0J*6ynCNn=$(<;n#O>M<1k`?_OV#-~_i?=8_TX zP{Zuf`iW;hOMJz}4@-E$syUoMpzrt$W&vL)VdEQr?WhTi_*5wJkeh0qr!n)nr8BGR zLCqR^gmv>e{3G@jXIZf{CG>_`(;#ms7Nb=b5MYEI;xBd%u_PVIrLI>}D6m4b#0-|P zZT2}-mot3x2EZ(^hu&z*8R*r0sHow^OIfXehp^}f1Cj8X}*MaLIc^TY>(&a57 zT_-@TzmI@>76Z5YWPL_9Nirx>&M#==g++?yvm5^bOcsI3jWRf^K3RMU<@3}JXyzn; zIO~HMNq*tRRmSh0Eh*hYBf__a3!gw{zmy}~!JG;B>e7(_)}|F{Ew~_HlbZvkX~B&t zIosojmQRQzB!3wv(5>&{sV3c8^1E}ZT#th1UeVV;qL)z3rdMW2lb1We=@_ppc*S(pfW=^)}9VHLo6JV7a` znCu&IG7M>IL*fgM{M|dIF z6?Ha6?vC3G(o-Y|dO8!iLHX2MgoF$3<7bPRisX`4FL7g+@j3Z_DO0!#kF!9!qs3*eXb9v6K)Q2WxQ=*oNlA+N?Emmx2de5^7_`>__FM;t3<6* z>rqdqh_63=!NREzEo<>XAzk#wlidnTUU1gzmlDe1EwPe2pf;Vj-Y_9+-Idg%^N}S* znoH2mJdcX4{8jDk%a6bY5Hge9#Uls+115xB3KE>$A)@YQk|c!5qnEr_H>Zr&t2uN97$QN8S7aT$N~M^~Jo z38B0tYkFmR&lf`5?;53frZ;LO=ichvt_Q#FmetOvoX4Z+zal4=dg+6YNwRCSfN4QU zEG6RJwjl-VnigH$rtT3sUFS}I8=<(XEcrD_=BGHo&kV-ri!8&t45_j)WXBl$W1XQ* z&I0o6E3QC*E&4FI6H(RVw|W|&eB4~p$v0duO8mQ+`nwAI<5f+CkczLpOJvDp<>Glz zriI6LGPC??QAZ~?0k}cH0|BcP{&r~dTGz=@UE6$SSeos(4l5|w!_T5VfM7)gK08Oo z`4mBJm}GHm8sNvoP&qPZ8ReCZ;rVQwy#`Ok_ppWA0|7JEc>qDd5pyB~adzn{cU`b$&AJmzf%!7w9$9gEr8jZ7hdF&)fid3Y7L0@bv_Dlt4*3y3 zG&3`*dV7>;2zFOjyuUKx%OH9hX@m6>d^dTd0R0)>rYTH#orB@qhCLB6R7|)qKMR81 zEe>k50S`~bI@k(Llc!JlU}s?c#iy;)xi$)ZYInCY;AOr6my9%X#gt8C^(|!IAKieF z>sTWDktzO1N7!DPqCFrK8eOBpj3B7pOAS7Q9bbw!IeJ~?gs$gon5pKAE$em%yZ>#N z$ueH?7OJq$2^tf!(~jECSxzRPL2Y^oIlmn#_)@Nle}@$^t=7#TK1AklR^t06n=hQ> zW>ATr%s?o`j4e;BmRad+Q~VkQK{g!aeX7`beDKIQY3UrP%=ZK4In zIqlSFS|b|RI_`0gb|!AkuH;~%`YF_B%;PcDM*?slo(i?n{Hv_?!510L_Yq>p%s_$v zMgh06lkVWN%|5Rb(HXyy7Hs*tji!R??dBjef&fN`PQT2pjw2R)N5~N2sT}EvJQjSB zY}Cs-Hd8KPFqLF{KwfXUWARi(c$uQT!-5WkKYTGTq`s&;#6SuNa4Dl7j+;W^s{s2t&|FEVDxRGiAFOAmHNQfW6dJ$d{I7@nfB8Sh^#49S&wStfSOM_J+Y29n OKN2Fc!j*#hf&T}>Z7zub literal 0 HcmV?d00001 diff --git a/docs/examples/sentiment_analysis/bert_fig2.png b/docs/examples/sentiment_analysis/bert_fig2.png new file mode 100644 index 0000000000000000000000000000000000000000..916b9370452f7354b54b9373f65bacf5e18283b6 GIT binary patch literal 37520 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 1000: + break + i += 1 + return(acc.get()[1]) +``` + +At the beginning of the training, random weight can make it difficult to converge. To solve this problem, **learning rate warmup** method was proposed to start the learning rate at first with a very small value and quickly increase it and then slowly reduce it again[2]. The code below uses the same approach. + +학습 초기에는 랜덤한 weight가 학습의 수렴을 방해할 수도 있습니다. 이에 대한 해결책으로, learning rate을 처음에 아주 작은 값으로 시작해서 빠르게 증가시키고 이후 다시 천천히 줄여나가는 **learning rate warmup** 방식이 제안되었습니다[2]. 아래 코드에서도 이와 같은 방식을 사용합니다. + +```{.python .input} +accumulate = 4 +step_size = batch_size * accumulate if accumulate else batch_size +num_train_examples = len(data_train) +num_train_steps = int(num_train_examples / step_size * num_epochs) +warmup_ratio = 0.1 +num_warmup_steps = int(num_train_steps * warmup_ratio) +step_num = 0 +all_model_params = model.collect_params() +``` + +```{.python .input} +# Set grad_req if gradient accumulation is required +if accumulate and accumulate > 1: + for p in params: + p.grad_req = 'add' +``` + +```{.python .input} +for epoch_id in range(num_epochs): + metric.reset() + step_loss = 0 + for batch_id, (token_ids, valid_length, segment_ids, label) in enumerate(train_dataloader): + if step_num < num_warmup_steps: + new_lr = lr * step_num / num_warmup_steps + else: + non_warmup_steps = step_num - num_warmup_steps + offset = non_warmup_steps / (num_train_steps - num_warmup_steps) + new_lr = lr - offset * lr + trainer.set_learning_rate(new_lr) + with mx.autograd.record(): + # load data to GPU + token_ids = token_ids.as_in_context(ctx) + valid_length = valid_length.as_in_context(ctx) + segment_ids = segment_ids.as_in_context(ctx) + label = label.as_in_context(ctx) + + # forward computation + out = model(token_ids, segment_ids, valid_length.astype('float32')) + ls = loss_function(out, label).mean() + + # backward computation + ls.backward() + if not accumulate or (batch_id + 1) % accumulate == 0: + trainer.allreduce_grads() + nlp.utils.clip_grad_global_norm(params, 1) + trainer.update(accumulate if accumulate else 1) + step_num += 1 + if accumulate and accumulate > 1: + # set grad to zero for gradient accumulation + all_model_params.zero_grad() + + step_loss += ls.asscalar() + metric.update([label], [out]) + if (batch_id + 1) % (50) == 0: + print('[Epoch {} Batch {}/{}] loss={:.4f}, lr={:.10f}, acc={:.3f}' + .format(epoch_id + 1, batch_id + 1, len(train_dataloader), + step_loss / log_interval, + trainer.learning_rate, metric.get()[1])) + step_loss = 0 + test_acc = evaluate_accuracy(model, test_dataloader, ctx) + print('Test Acc : {}'.format(test_acc)) +``` + +So far, we've implemented a sentiment classifier of Naver movie review dataset using a pre-trained **KoBERT** model of GluonNLP Model Zoo. In general, the sentiment analysis models of this dataset are known to obtain accuracy of **83 to 85%**. Our implementation using **GluonNLP/KoBERT** was able to achieve a very high accuracy of about **90%**. + +지금까지 GluonNLP Model Zoo의 **KoBERT** 사전학습 모델을 사용해 네이버 영화리뷰의 감정 분석 분류기를 구현해봤습니다. +일반적으로 네이버 영화리뷰의 감성 분석 모델은 **83~85%** 정도의 accuracy를 얻는다고 알려져 있는데, 위의 **GluonNLP/KoBERT** 구현에서는 약 **90%**의 대단히 높은 accuracy를 얻을 수 있었습니다. + +## References +## 참고 문헌 + +[1] Jia et.al., “[Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes.](https://arxiv.org/abs/1807.11205)” arXiv preprint arXiv:1807.11205 (2018). + +[2] Goyal et.al., “[Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.](https://arxiv.org/abs/1706.02677)” arXiv preprint arXiv:1706.02677 (2018). + +```{.python .input} + +``` From 5dc6b9c9fab9e99b155554a50466c514b879ea84 Mon Sep 17 00:00:00 2001 From: "WANG, Chen" <16307110064@fudan.edu.cn> Date: Wed, 13 May 2020 01:33:49 +0800 Subject: [PATCH 11/22] [CI] Lift timeout on cpu unittest (#1229) * Update Jenkinsfile_py3_cpu_unittest * Update Jenkinsfile_py3-master_cpu_unittest --- ci/jenkins/Jenkinsfile_py3-master_cpu_unittest | 2 +- ci/jenkins/Jenkinsfile_py3_cpu_unittest | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/jenkins/Jenkinsfile_py3-master_cpu_unittest b/ci/jenkins/Jenkinsfile_py3-master_cpu_unittest index fb87760de6..cf2ddb402d 100644 --- a/ci/jenkins/Jenkinsfile_py3-master_cpu_unittest +++ b/ci/jenkins/Jenkinsfile_py3-master_cpu_unittest @@ -21,7 +21,7 @@ // See documents at https://jenkins.io/doc/book/pipeline/jenkinsfile/ // timeout in minutes -max_time = 120 +max_time = 180 node { // Loading the utilities requires a node context unfortunately diff --git a/ci/jenkins/Jenkinsfile_py3_cpu_unittest b/ci/jenkins/Jenkinsfile_py3_cpu_unittest index 6d518fdbfd..56478e1a0a 100644 --- a/ci/jenkins/Jenkinsfile_py3_cpu_unittest +++ b/ci/jenkins/Jenkinsfile_py3_cpu_unittest @@ -21,7 +21,7 @@ // See documents at https://jenkins.io/doc/book/pipeline/jenkinsfile/ // timeout in minutes -max_time = 120 +max_time = 180 node { // Loading the utilities requires a node context unfortunately From 9752f0581811f458ca1e1b7f3771728830a78524 Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Tue, 23 Jun 2020 11:04:04 +0900 Subject: [PATCH 12/22] Update kobert_naver_movie.md 1. number of epochs modified to 1. 2. unnecessary package installation removed. --- .../sentiment_analysis/kobert_naver_movie.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index c1257c48af..95db2aa2cc 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -20,10 +20,6 @@ Download and install the files required for this example. !pip install sentencepiece ``` -```{.python .input} -!pip install git+https://git@github.com/SKTBrain/KoBERT.git@master -``` - ```{.python .input} import pandas as pd import numpy as np @@ -190,7 +186,7 @@ trainer = gluon.Trainer(model.collect_params(), 'bertadam', {'learning_rate': lr, 'epsilon': 1e-9, 'wd':0.01}) log_interval = 4 -num_epochs = 5 +num_epochs = 1 ``` Weight decay does not apply to LayerNorm and Bias. That's because it has little effect of regularization, and to prevent the possibility that it would rather cause underfitting. For more information, please refer to [1]. @@ -291,10 +287,13 @@ for epoch_id in range(num_epochs): print('Test Acc : {}'.format(test_acc)) ``` -So far, we've implemented a sentiment classifier of Naver movie review dataset using a pre-trained **KoBERT** model of GluonNLP Model Zoo. In general, the sentiment analysis models of this dataset are known to obtain accuracy of **83 to 85%**. Our implementation using **GluonNLP/KoBERT** was able to achieve a very high accuracy of about **90%**. +So far, we've implemented a sentiment classifier of Naver movie review dataset using a pre-trained **KoBERT** model of GluonNLP Model Zoo. +In general, the sentiment analysis models of this dataset are known to obtain accuracy of **83 to 85%**. +Our implementation using **GluonNLP/KoBERT** was able to achieve a very high accuracy of about **89%** with just one epoch. -지금까지 GluonNLP Model Zoo의 **KoBERT** 사전학습 모델을 사용해 네이버 영화리뷰의 감정 분석 분류기를 구현해봤습니다. -일반적으로 네이버 영화리뷰의 감성 분석 모델은 **83~85%** 정도의 accuracy를 얻는다고 알려져 있는데, 위의 **GluonNLP/KoBERT** 구현에서는 약 **90%**의 대단히 높은 accuracy를 얻을 수 있었습니다. +지금까지 GluonNLP Model Zoo의 **KoBERT** 사전학습 모델을 사용해 네이버 영화리뷰의 감정 분석 분류기를 구현해봤습니다. +일반적으로 네이버 영화리뷰의 감성 분석 모델은 **83~85%** 정도의 accuracy를 얻는다고 알려져 있는데, +위의 **GluonNLP/KoBERT** 구현에서는 1번의 epoch 만으로도 약 **89%**의 대단히 높은 accuracy를 얻을 수 있었습니다. ## References ## 참고 문헌 From f873a1e3c6ee293468dbdad9d9e2f0386c18254f Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Fri, 3 Jul 2020 07:33:50 +0900 Subject: [PATCH 13/22] Update kobert_naver_movie.md Setup part modified. --- .../sentiment_analysis/kobert_naver_movie.md | 121 ++++++++++++------ 1 file changed, 85 insertions(+), 36 deletions(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index 95db2aa2cc..94fd7c7c0b 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -1,27 +1,29 @@ # Sentiment Analysis with KoBERT using Movie Review Data # KoBERT를 이용한 네이버 영화 리뷰 감정 분석 +In this tutorial, we will implement a sentiment analysis of [Naver sentiment +movie corpus](https://github.com/e9t/nsmc) with a pretrained Korean BERT +(**KoBERT**) provided by GluonNLP's Model Zoo. -In this tutorial, we will implement a sentiment analysis of [Naver sentiment movie corpus](https://github.com/e9t/nsmc) with a pretrained Korean BERT (**KoBERT**) provided by GluonNLP's Model Zoo. - -이번 예제에서는 GluonNLP의 Model Zoo에서 제공하는 한국어 BERT(**KoBERT**)의 pretrained 모델로 네이버 영화리뷰의 감정 분석(sentiment analysis)을 구현해 보겠습니다. +이번 예제에서는 GluonNLP의 Model Zoo에서 제공하는 한국어 BERT(**KoBERT**)의 pretrained 모델로 네이버 +영화리뷰의 감정 분석(sentiment analysis)을 구현해 보겠습니다. ## Setup ## 사전 설치 -Download and install the files required for this example. +If you have a package listed below but not installed yet, uncomment the line and +install the file. -이 예제를 위해 필요한 파일을 다운로드하고 설치합니다. +아래 나열된 패키지 중에서 아직 설치되지 않은 것이 있다면, 커멘드 기호('#')를 제거하고 파일을 설치합니다. ```{.python .input} -!pip install tqdm -!pip install mxnet-cu101 -!pip install gluonnlp pandas -!pip install sentencepiece +#!pip install tqdm +#!pip install mxnet-cu101 +#!pip install gluonnlp +#!pip install sentencepiece ``` ```{.python .input} -import pandas as pd import numpy as np from mxnet.gluon import nn, rnn from mxnet import gluon, autograd @@ -56,9 +58,22 @@ tok = nlp.data.BERTSPTokenizer(tokenizer._path, vocab, lower=False) ## Define Classifier ## Classifier 정의 -Now define the `BERTClassifier` class to classify the positive or negative reviews. The last pooling layer (`pooler`) of the BERT model returns the embedding vector of the `[CLS]` token. You can simply configure `BERTClassifier` by linking this output to a fully connected layer (`nn.Dense`) and softmax layer. The Softmax output is the probability value of the positive/negative label, and you can compare the predicted label with the ground truth label to calculate the cross-entropy and update the model in a direction that minimizes the loss. - -이제 영화 리뷰의 긍정/부정을 분류할 `BERTClassifier` 클래스를 정의합니다. BERT 모델 마지막의 pooling layer (`pooler`)는 `[CLS]` 토큰의 임베딩 벡터를 리턴하는데, 이 출력을 fully connected layer (`nn.Dense`)와 softmax layer로 연결해 간단하게 `BERTClassifier`를 구성할 수 있습니다. Softmax 출력은 긍정/부정 레이블의 확률 값이 되며, 예측한 레이블을 ground truth 레이블과 비교해 크로스 엔트로피를 계산하고 손실을 최소화하는 방향으로 모델을 업데이트합니다. +Now define the `BERTClassifier` class to classify the positive or negative +reviews. +The last pooling layer (`pooler`) of the BERT model returns the embedding vector +of the `[CLS]` token. +You can simply configure `BERTClassifier` by linking this output to a fully +connected layer (`nn.Dense`) and softmax layer. +The Softmax output is the probability value of the positive/negative label, and +you can compare the predicted label with the ground truth label to calculate the +cross-entropy and update the model in a direction that minimizes the loss. + +이제 영화 리뷰의 긍정/부정을 분류할 `BERTClassifier` 클래스를 정의합니다. +BERT 모델 마지막의 pooling layer (`pooler`)는 `[CLS]` 토큰의 임베딩 벡터를 리턴하는데, +이 출력을 fully connected layer (`nn.Dense`)와 softmax layer로 연결해 간단하게 +`BERTClassifier`를 구성할 수 있습니다. +Softmax 출력은 긍정/부정 레이블의 확률 값이 되며, 예측한 레이블을 ground truth 레이블과 비교해 크로스 엔트로피를 계산하고 +손실을 최소화하는 방향으로 모델을 업데이트합니다. ![bert-sentence-pair](./bert-sentence-pair.png) @@ -98,9 +113,11 @@ metric = mx.metric.Accuracy() ## Load the Movie Review Dataset ## 네이버 영화 리뷰 데이터 로드 -Download Lucy Park's [Naver Sentimental Movie Corpus](https://github.com/e9t/nsmc) dataset from Github. +Download Lucy Park's [Naver Sentimental Movie +Corpus](https://github.com/e9t/nsmc) dataset from Github. -박은정님의 [Naver sentiment movie corpus](https://github.com/e9t/nsmc)를 Github에서 다운로드합니다. +박은정님의 [Naver sentiment movie corpus](https://github.com/e9t/nsmc)를 Github에서 +다운로드합니다. ```{.python .input} !git clone https://github.com/e9t/nsmc.git @@ -118,17 +135,20 @@ print(dataset_test[0:5]) Next, define the class `BERTDataset` to load this data. GluonNLP's [BERTSentenceTransform](https://gluon- -nlp.mxnet.io/api/modules/data.html#gluonnlp.data.BERTSentenceTransform) function makes it easy to do the following pre-processing processes that BERT needs: +nlp.mxnet.io/api/modules/data.html#gluonnlp.data.BERTSentenceTransform) function +makes it easy to do the following pre-processing processes that BERT needs: 1. Tokenize the input sentence, and insert '[CLS]' and '[SEP]' where necessary. -2. Because one or two sentences can be entered, create a type id that separates them. - +2. Because one or two sentences can be entered, create a type id that separates +them. 3. Calculate the effective length. -다음으로, 이 데이터를 로드하는 `BERTDataset` 클래스를 정의합니다. GluonNLP의 [BERTSentenceTransform](https://gluon- -nlp.mxnet.io/api/modules/data.html#gluonnlp.data.BERTSentenceTransform) 함수를 사용하면 BERT가 필요로 하는 아래와 같은 전처리 과정을 쉽게 할 수 있습니다. +다음으로, 이 데이터를 로드하는 `BERTDataset` 클래스를 정의합니다. +GluonNLP의 [BERTSentenceTransform](https://gluon- +nlp.mxnet.io/api/modules/data.html#gluonnlp.data.BERTSentenceTransform) 함수를 사용하면 +BERT가 필요로 하는 아래와 같은 전처리 과정을 쉽게 할 수 있습니다. -1. 입력 문장을 tokenize 하고, `[CLS]` ,`[SEP]`을 필요한 위치에 삽입합니다. +1. 입력 문장을 tokenize 하고, `[CLS]`, `[SEP]`을 필요한 위치에 삽입합니다. 2. 문장이 하나 또는 두 개가 입력될 수 있으므로, 이를 구분하는 type id를 생성합니다. 3. 유효 길이를 계산합니다. @@ -167,11 +187,18 @@ data_test = BERTDataset(dataset_test, 0, 1, tok, max_len, True, False) ## Fine-tune the Model ## 모델 파인튜닝 -Now that everything is ready, you can start fine-tuning. We used **BERTAdam** as the optimizer. BERTAdam is similar to Adam, but has a separate weight decay and gradient update. For more information, please refer to GluonNLP's [BERTAdam](https://gluon- +Now that everything is ready, you can start fine-tuning. +We used **BERTAdam** as the optimizer. +BERTAdam is similar to Adam, but has a separate weight decay and gradient +update. +For more information, please refer to GluonNLP's [BERTAdam](https://gluon- nlp.mxnet.io/api/modules/optimizer.html#gluonnlp.optimizer.BERTAdam) document. -이제 모든 준비가 되었으므로 파인튜닝을 시작할 수 있습니다. 옵티마이저로는 **BERTAdam**을 사용했습니다. BERTAdam은 Adam과 유사하지만 weight decay와 gradient update가 분리된 특징이 있습니다. 더 자세한 정보는 GluonNLP의 -[BERTAdam](https://gluon- -nlp.mxnet.io/api/modules/optimizer.html#gluonnlp.optimizer.BERTAdam) 문서를 참고하시기 바랍니다. + +이제 모든 준비가 되었으므로 파인튜닝을 시작할 수 있습니다. +옵티마이저로는 **BERTAdam**을 사용했습니다. BERTAdam은 Adam과 유사하지만 weight decay와 gradient +update가 분리된 특징이 있습니다. 더 자세한 정보는 GluonNLP의 [BERTAdam](https://gluon- +nlp.mxnet.io/api/modules/optimizer.html#gluonnlp.optimizer.BERTAdam) 문서를 참고하시기 +바랍니다. ```{.python .input} batch_size = 32 @@ -189,9 +216,14 @@ log_interval = 4 num_epochs = 1 ``` -Weight decay does not apply to LayerNorm and Bias. That's because it has little effect of regularization, and to prevent the possibility that it would rather cause underfitting. For more information, please refer to [1]. +Weight decay does not apply to LayerNorm and Bias. +That's because it has little effect of regularization, and to prevent the +possibility that it would rather cause underfitting. +For more information, please refer to [1]. -LayerNorm과 Bias에는 weight decay를 적용하지 않습니다. Regularization의 효과가 거의 없고 오히려 underfitting을 초래할 가능성을 방지하기 위해서입니다. 자세한 내용에 대해서는 [1]을 참고하시기 바랍니다. +LayerNorm과 Bias에는 weight decay를 적용하지 않습니다. +Regularization의 효과가 거의 없고 오히려 underfitting을 초래할 가능성을 방지하기 위해서입니다. +자세한 내용에 대해서는 [1]을 참고하시기 바랍니다. ```{.python .input} for _, v in model.collect_params('.*beta|.*gamma|.*bias').items(): @@ -219,9 +251,17 @@ def evaluate_accuracy(model, data_iter, ctx=ctx): return(acc.get()[1]) ``` -At the beginning of the training, random weight can make it difficult to converge. To solve this problem, **learning rate warmup** method was proposed to start the learning rate at first with a very small value and quickly increase it and then slowly reduce it again[2]. The code below uses the same approach. +At the beginning of the training, random weight can make it difficult to +converge. +To solve this problem, **learning rate warmup** method was proposed to start the +learning rate at first with a very small value and quickly increase it and then +slowly reduce it again[2]. +The code below uses the same approach. -학습 초기에는 랜덤한 weight가 학습의 수렴을 방해할 수도 있습니다. 이에 대한 해결책으로, learning rate을 처음에 아주 작은 값으로 시작해서 빠르게 증가시키고 이후 다시 천천히 줄여나가는 **learning rate warmup** 방식이 제안되었습니다[2]. 아래 코드에서도 이와 같은 방식을 사용합니다. +학습 초기에는 랜덤한 weight가 학습의 수렴을 방해할 수도 있습니다. +이에 대한 해결책으로, learning rate을 처음에 아주 작은 값으로 시작해서 빠르게 증가시키고 이후 다시 천천히 줄여나가는 +**learning rate warmup** 방식이 제안되었습니다[2]. +아래 코드에서도 이와 같은 방식을 사용합니다. ```{.python .input} accumulate = 4 @@ -287,20 +327,29 @@ for epoch_id in range(num_epochs): print('Test Acc : {}'.format(test_acc)) ``` -So far, we've implemented a sentiment classifier of Naver movie review dataset using a pre-trained **KoBERT** model of GluonNLP Model Zoo. -In general, the sentiment analysis models of this dataset are known to obtain accuracy of **83 to 85%**. -Our implementation using **GluonNLP/KoBERT** was able to achieve a very high accuracy of about **89%** with just one epoch. +So far, we've implemented a sentiment classifier of Naver movie review dataset +using a pre-trained **KoBERT** model of GluonNLP Model Zoo. +In general, the sentiment analysis models of this dataset are known to obtain +accuracy of **83 to 85%**. +Our implementation using **GluonNLP/KoBERT** was able to achieve a very high +accuracy of about **89%** with just one epoch. -지금까지 GluonNLP Model Zoo의 **KoBERT** 사전학습 모델을 사용해 네이버 영화리뷰의 감정 분석 분류기를 구현해봤습니다. +지금까지 GluonNLP Model Zoo의 **KoBERT** 사전학습 모델을 사용해 네이버 영화리뷰의 감정 분석 분류기를 구현해봤습니다. 일반적으로 네이버 영화리뷰의 감성 분석 모델은 **83~85%** 정도의 accuracy를 얻는다고 알려져 있는데, -위의 **GluonNLP/KoBERT** 구현에서는 1번의 epoch 만으로도 약 **89%**의 대단히 높은 accuracy를 얻을 수 있었습니다. +위의 **GluonNLP/KoBERT** 구현에서는 1번의 epoch 만으로도 약 **89%**의 대단히 높은 accuracy를 얻을 수 +있었습니다. ## References ## 참고 문헌 -[1] Jia et.al., “[Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes.](https://arxiv.org/abs/1807.11205)” arXiv preprint arXiv:1807.11205 (2018). +[1] Jia et.al., “[Highly Scalable Deep Learning Training System with Mixed- +Precision: Training ImageNet in Four +Minutes.](https://arxiv.org/abs/1807.11205)” arXiv preprint arXiv:1807.11205 +(2018). -[2] Goyal et.al., “[Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.](https://arxiv.org/abs/1706.02677)” arXiv preprint arXiv:1706.02677 (2018). +[2] Goyal et.al., “[Accurate, Large Minibatch SGD: Training ImageNet in 1 +Hour.](https://arxiv.org/abs/1706.02677)” arXiv preprint arXiv:1706.02677 +(2018). ```{.python .input} From 67ef280cd7a98d0377fbd981ffd07ab5671e555f Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Fri, 10 Jul 2020 11:08:11 +0900 Subject: [PATCH 14/22] Update index.rst Added the original self_attentive_sentence_embedding.ipynb contents. --- docs/examples/sentiment_analysis/index.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/examples/sentiment_analysis/index.rst b/docs/examples/sentiment_analysis/index.rst index ea71428aff..3a4225037d 100644 --- a/docs/examples/sentiment_analysis/index.rst +++ b/docs/examples/sentiment_analysis/index.rst @@ -9,6 +9,13 @@ Sentiment Analysis See how to fine-tune a pre-trained language model to perform sentiment analysis on movie reviews. + .. card:: + :title: Training Structured Self-attentive Sentence Embedding + :link: self_attentive_sentence_embedding.html + + See how to use GluonNLP to build more advanced model structure for extracting sentence + embeddings to predict Yelp review rating. + .. card:: :title: Sentiment Analysis with KoBERT (Korean BERT) using Movie Review Data :link: kobert_naver_movie.html @@ -20,6 +27,7 @@ Sentiment Analysis :maxdepth: 2 sentiment_analysis.ipynb + self_attentive_sentence_embedding.ipynb kobert_naver_movie.ipynb From beb21a3f629168510a0ae5bff4f76c8544d7326e Mon Sep 17 00:00:00 2001 From: Leonard Lausen Date: Wed, 5 Aug 2020 02:29:57 +0000 Subject: [PATCH 15/22] Version 0.9.2 (#1272) --- src/gluonnlp/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gluonnlp/__init__.py b/src/gluonnlp/__init__.py index 6517c25e30..a25477f12a 100644 --- a/src/gluonnlp/__init__.py +++ b/src/gluonnlp/__init__.py @@ -32,7 +32,7 @@ from . import initializer from .vocab import Vocab -__version__ = '0.9.1' +__version__ = '0.9.2' __all__ = ['data', 'model', From ff1480665de63c55843f43907eba0fa36965b14b Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Mon, 24 Aug 2020 13:07:47 -0700 Subject: [PATCH 16/22] fix dependency --- env/cpu/py3.yml | 2 +- env/docker/py3.yml | 2 +- env/gpu/py3.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/env/cpu/py3.yml b/env/cpu/py3.yml index 55d93d2e54..37a09fa4cd 100644 --- a/env/cpu/py3.yml +++ b/env/cpu/py3.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - mxnet==1.6.0 + - mxnet<=1.7 - scipy==1.3.2 - regex==2020.4.4 - nltk==3.4.5 diff --git a/env/docker/py3.yml b/env/docker/py3.yml index 11b34e4d25..c0390c7fee 100644 --- a/env/docker/py3.yml +++ b/env/docker/py3.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - mxnet-cu101==1.6.0 + - mxnet-cu101<=1.7 - scipy==1.3.2 - regex==2020.4.4 - nltk==3.4.5 diff --git a/env/gpu/py3.yml b/env/gpu/py3.yml index 6eed672474..a6f5f9162c 100644 --- a/env/gpu/py3.yml +++ b/env/gpu/py3.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - mxnet-cu101==1.6.0 + - mxnet-cu101<=1.7 - scipy==1.3.2 - regex==2020.4.4 - nltk==3.4.5 From 56016ab0b5cb27ef1584e9aec61d09512ef44478 Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Thu, 27 Aug 2020 19:11:21 -0700 Subject: [PATCH 17/22] Update kobert_naver_movie.md --- docs/examples/sentiment_analysis/kobert_naver_movie.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index 94fd7c7c0b..d9cc3cabac 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -350,7 +350,3 @@ Minutes.](https://arxiv.org/abs/1807.11205)” arXiv preprint arXiv:1807.11205 [2] Goyal et.al., “[Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour.](https://arxiv.org/abs/1706.02677)” arXiv preprint arXiv:1706.02677 (2018). - -```{.python .input} - -``` From fc3fe1e152211dc42c9e9e2b793c406c10d42ca9 Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Wed, 9 Sep 2020 14:47:20 +0900 Subject: [PATCH 18/22] Update kobert_naver_movie.md Added local data clean up code. --- docs/examples/sentiment_analysis/kobert_naver_movie.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index d9cc3cabac..884b17092c 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -325,6 +325,9 @@ for epoch_id in range(num_epochs): step_loss = 0 test_acc = evaluate_accuracy(model, test_dataloader, ctx) print('Test Acc : {}'.format(test_acc)) + +# clean up +!rm -rf dataset_folder ``` So far, we've implemented a sentiment classifier of Naver movie review dataset From 01e99732a1fa8270a2241bdd8711c498aeb93415 Mon Sep 17 00:00:00 2001 From: Jiyang Kang Date: Thu, 10 Sep 2020 09:49:59 +0900 Subject: [PATCH 19/22] Update kobert_naver_movie.md changed clean up code. --- docs/examples/sentiment_analysis/kobert_naver_movie.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index 884b17092c..d81a7ed28d 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -327,7 +327,7 @@ for epoch_id in range(num_epochs): print('Test Acc : {}'.format(test_acc)) # clean up -!rm -rf dataset_folder +!rm -rf nsmc ``` So far, we've implemented a sentiment classifier of Naver movie review dataset From a36d009bb22ae5b55dc786814cbb68f5839bc5b6 Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Wed, 9 Sep 2020 20:53:53 -0700 Subject: [PATCH 20/22] Update kobert_naver_movie.md --- docs/examples/sentiment_analysis/kobert_naver_movie.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index d81a7ed28d..3f1255c494 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -325,9 +325,10 @@ for epoch_id in range(num_epochs): step_loss = 0 test_acc = evaluate_accuracy(model, test_dataloader, ctx) print('Test Acc : {}'.format(test_acc)) - -# clean up -!rm -rf nsmc +``` + +```{.python .input} +!rm -rf nsmc # clean up ``` So far, we've implemented a sentiment classifier of Naver movie review dataset From 5a8a328e9e98d9456a7fcea021b7e042fe6e9389 Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Mon, 9 Nov 2020 12:59:58 -0800 Subject: [PATCH 21/22] Update py3.yml --- env/cpu/py3.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env/cpu/py3.yml b/env/cpu/py3.yml index 37a09fa4cd..c811041cd3 100644 --- a/env/cpu/py3.yml +++ b/env/cpu/py3.yml @@ -33,7 +33,7 @@ dependencies: - flaky==3.6.1 - flake8==3.7.9 - mock<3 - - mxnet<=1.7 + - mxnet<2 - scipy==1.3.2 - regex==2020.4.4 - nltk==3.4.5 From 4ba25a88fc3bf8b3009fac95e7686adb18debe52 Mon Sep 17 00:00:00 2001 From: Sheng Zha Date: Mon, 9 Nov 2020 14:28:12 -0800 Subject: [PATCH 22/22] Update kobert_naver_movie.md --- docs/examples/sentiment_analysis/kobert_naver_movie.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/examples/sentiment_analysis/kobert_naver_movie.md b/docs/examples/sentiment_analysis/kobert_naver_movie.md index 3f1255c494..d7067c96b6 100644 --- a/docs/examples/sentiment_analysis/kobert_naver_movie.md +++ b/docs/examples/sentiment_analysis/kobert_naver_movie.md @@ -328,7 +328,9 @@ for epoch_id in range(num_epochs): ``` ```{.python .input} -!rm -rf nsmc # clean up +# clean up data +import shutil +shutil.rmtree('nsmc', True) ``` So far, we've implemented a sentiment classifier of Naver movie review dataset