{"action":"created","comment":{"url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/comments/288301447","pull_request_review_id":242920967,"id":288301447,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI4ODMwMTQ0Nw==","diff_hunk":"@@ -0,0 +1,109 @@\n+# coding: utf-8\n+# Licensed to the Apache Software Foundation (ASF) under one\n+# or more contributor license agreements.  See the NOTICE file\n+# distributed with this work for additional information\n+# regarding copyright ownership.  The ASF licenses this file\n+# to you under the Apache License, Version 2.0 (the\n+# \"License\"); you may not use this file except in compliance\n+# with the License.  You may obtain a copy of the License at\n+#\n+#   http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing,\n+# software distributed under the License is distributed on an\n+# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+# KIND, either express or implied.  See the License for the\n+# specific language governing permissions and limitations\n+# under the License.\n+\n+\"\"\"LAMB optimizer\"\"\"\n+\n+from mxnet.optimizer import Optimizer, register\n+from mxnet.ndarray import zeros, NDArray\n+from mxnet.ndarray import square, power, sqrt, maximum, minimum, clip\n+\n+__all__ = ['LAMB']\n+\n+\n+@register\n+class LAMB(Optimizer):\n+    \"\"\"The LAMB optimizer proposed in\n+    `Reducing BERT Pre-Training Time from 3 Days to 76 Minutes <https://arxiv.org/abs/1904.00962>`_.\n+\n+    Updates are applied by::\n+        grad = clip(grad * rescale_grad, clip_gradient)\n+        m = beta1 * m + (1 - beta1) * grad\n+        v = beta2 * v + (1 - beta2) * (grad**2)\n+        m_hat = m / (1 - power(beta1, t))\n+        v_hat = m / (1 - power(beta2, t))\n+        r1 = w.norm()\n+        g = m_hat / (sqrt(v_hat + epsilon)) + wd * w\n+        r2 = g.norm()\n+        r = if r1 == 0. or r2 == 0. else minimum(\n+            maximum(r1 / r2, self.lower_bound), self.upper_bound)\n+        lr = r * lr\n+        w = w - lr * g\n+\n+    Parameters\n+    ----------\n+    beta1 : float, optional, default is 0.9\n+        Exponential decay rate for the first moment estimates.\n+    beta2 : float, optional, default is 0.999\n+        Exponential decay rate for the second moment estimates.\n+    epsilon : float, optional, default is 1e-6\n+        Small value to avoid division by 0.\n+    lower_bound : float, optional, default is 1e-3\n+        Lower limit of lamb_trust_ratio\n+    upper_bound : float, optional, default is 10.0\n+        Upper limit of lamb_trust_ratio\n+    \"\"\"\n+\n+    def __init__(self, learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-6,\n+                 lower_bound=1e-3, upper_bound=10.0, lazy_update=False, **kwargs):\n+        super(LAMB, self).__init__(learning_rate=learning_rate, **kwargs)\n+        self.beta1 = beta1\n+        self.beta2 = beta2\n+        self.epsilon = epsilon\n+        self.lower_bound = lower_bound\n+        self.upper_bound = upper_bound\n+        self.lazy_update = lazy_update\n+\n+    def create_state(self, index, weight):\n+        stype = weight.stype if self.lazy_update else 'default'\n+        return (zeros(weight.shape, weight.context, dtype=weight.dtype,\n+                      stype=stype),  # mean\n+                zeros(weight.shape, weight.context, dtype=weight.dtype,\n+                      stype=stype))  # variance\n+\n+    def update(self, index, weight, grad, state):\n+        assert(isinstance(weight, NDArray))\n+        assert(isinstance(grad, NDArray))\n+        self._update_count(index)\n+        lr = self._get_lr(index)\n+        wd = self._get_wd(index)\n+        t = self._index_update_count[index]\n+\n+        # preprocess grad\n+        grad *= self.rescale_grad\n+        if self.clip_gradient is not None:\n+            grad = clip(grad, -self.clip_gradient, self.clip_gradient)\n+\n+        mean, var = state\n+        mean[:] = self.beta1 * mean + (1. - self.beta1) * grad\n+        var[:] = self.beta2 * var + (1. - self.beta2) * square(grad)\n+\n+        # execution bias correction\n+        mean_hat = mean / (1. - power(self.beta1, t))\n+        var_hat = var / (1. - power(self.beta2, t))","path":"src/gluonnlp/optimizer/lamb.py","position":97,"original_position":97,"commit_id":"2e4f2b335c13040d79d3db42af3d7d8adc09afde","original_commit_id":"2e4f2b335c13040d79d3db42af3d7d8adc09afde","user":{"login":"xcgoner","id":6704257,"node_id":"MDQ6VXNlcjY3MDQyNTc=","avatar_url":"https://avatars1.githubusercontent.com/u/6704257?v=4","gravatar_id":"","url":"https://api.github.com/users/xcgoner","html_url":"https://github.com/xcgoner","followers_url":"https://api.github.com/users/xcgoner/followers","following_url":"https://api.github.com/users/xcgoner/following{/other_user}","gists_url":"https://api.github.com/users/xcgoner/gists{/gist_id}","starred_url":"https://api.github.com/users/xcgoner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcgoner/subscriptions","organizations_url":"https://api.github.com/users/xcgoner/orgs","repos_url":"https://api.github.com/users/xcgoner/repos","events_url":"https://api.github.com/users/xcgoner/events{/privacy}","received_events_url":"https://api.github.com/users/xcgoner/received_events","type":"User","site_admin":false},"body":"What about we keep both versions of LAMB, and test which one is better by ourselves? There are significant differences between these 2, especially the existence of bias correction. Just add a flag so that the users can choose which one to use.","created_at":"2019-05-28T21:04:11Z","updated_at":"2019-05-28T21:04:11Z","html_url":"https://github.com/dmlc/gluon-nlp/pull/733#discussion_r288301447","pull_request_url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/comments/288301447"},"html":{"href":"https://github.com/dmlc/gluon-nlp/pull/733#discussion_r288301447"},"pull_request":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733"}},"in_reply_to_id":287921496},"pull_request":{"url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733","id":282474476,"node_id":"MDExOlB1bGxSZXF1ZXN0MjgyNDc0NDc2","html_url":"https://github.com/dmlc/gluon-nlp/pull/733","diff_url":"https://github.com/dmlc/gluon-nlp/pull/733.diff","patch_url":"https://github.com/dmlc/gluon-nlp/pull/733.patch","issue_url":"https://api.github.com/repos/dmlc/gluon-nlp/issues/733","number":733,"state":"open","locked":false,"title":"[FEATURE] Add LAMB optimizer","user":{"login":"kenjewu","id":27672489,"node_id":"MDQ6VXNlcjI3NjcyNDg5","avatar_url":"https://avatars0.githubusercontent.com/u/27672489?v=4","gravatar_id":"","url":"https://api.github.com/users/kenjewu","html_url":"https://github.com/kenjewu","followers_url":"https://api.github.com/users/kenjewu/followers","following_url":"https://api.github.com/users/kenjewu/following{/other_user}","gists_url":"https://api.github.com/users/kenjewu/gists{/gist_id}","starred_url":"https://api.github.com/users/kenjewu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kenjewu/subscriptions","organizations_url":"https://api.github.com/users/kenjewu/orgs","repos_url":"https://api.github.com/users/kenjewu/repos","events_url":"https://api.github.com/users/kenjewu/events{/privacy}","received_events_url":"https://api.github.com/users/kenjewu/received_events","type":"User","site_admin":false},"body":"## Description ##\r\nThe LAMB optimizer: \r\nIt has been proposed in [Reducing BERT Pre-Training Time from 3 Days to 76 Minutes](https://arxiv.org/abs/1904.00962).\r\n\r\nA simple neural network has been used for verification, and the results show that the model can converge normally with large batchsize. Need to be verified further on the BERT.\r\n\r\n@eric-haibin-lin  Verification may require your help because of some computing resource limitations.\r\n\r\n\r\n## Checklist ##\r\n### Essentials ###\r\n- [x] PR's title starts with a category (e.g. [BUGFIX], [MODEL], [TUTORIAL], [FEATURE], [DOC], etc)\r\n- [x] Changes are complete (i.e. I finished coding on this PR)\r\n- [ ] All changes have test coverage\r\n- [x] Code is well-documented\r\n\r\n### Changes ###\r\n- [ ] Feature1, tests, (and when applicable, API doc)\r\n- [ ] Feature2, tests, (and when applicable, API doc)\r\n\r\n## Comments ##\r\n- If this change is a backward incompatible change, why must this change be made.\r\n- Interesting edge cases to note here\r\n","created_at":"2019-05-27T11:23:45Z","updated_at":"2019-05-28T21:04:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8216d1398b1fd91d1870669063f7b725e55859ca","assignee":null,"assignees":[],"requested_reviewers":[{"login":"szha","id":2626883,"node_id":"MDQ6VXNlcjI2MjY4ODM=","avatar_url":"https://avatars2.githubusercontent.com/u/2626883?v=4","gravatar_id":"","url":"https://api.github.com/users/szha","html_url":"https://github.com/szha","followers_url":"https://api.github.com/users/szha/followers","following_url":"https://api.github.com/users/szha/following{/other_user}","gists_url":"https://api.github.com/users/szha/gists{/gist_id}","starred_url":"https://api.github.com/users/szha/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szha/subscriptions","organizations_url":"https://api.github.com/users/szha/orgs","repos_url":"https://api.github.com/users/szha/repos","events_url":"https://api.github.com/users/szha/events{/privacy}","received_events_url":"https://api.github.com/users/szha/received_events","type":"User","site_admin":false},{"login":"eric-haibin-lin","id":5545640,"node_id":"MDQ6VXNlcjU1NDU2NDA=","avatar_url":"https://avatars1.githubusercontent.com/u/5545640?v=4","gravatar_id":"","url":"https://api.github.com/users/eric-haibin-lin","html_url":"https://github.com/eric-haibin-lin","followers_url":"https://api.github.com/users/eric-haibin-lin/followers","following_url":"https://api.github.com/users/eric-haibin-lin/following{/other_user}","gists_url":"https://api.github.com/users/eric-haibin-lin/gists{/gist_id}","starred_url":"https://api.github.com/users/eric-haibin-lin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eric-haibin-lin/subscriptions","organizations_url":"https://api.github.com/users/eric-haibin-lin/orgs","repos_url":"https://api.github.com/users/eric-haibin-lin/repos","events_url":"https://api.github.com/users/eric-haibin-lin/events{/privacy}","received_events_url":"https://api.github.com/users/eric-haibin-lin/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733/commits","review_comments_url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733/comments","review_comment_url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dmlc/gluon-nlp/issues/733/comments","statuses_url":"https://api.github.com/repos/dmlc/gluon-nlp/statuses/2e4f2b335c13040d79d3db42af3d7d8adc09afde","head":{"label":"kenjewu:LAMB","ref":"LAMB","sha":"2e4f2b335c13040d79d3db42af3d7d8adc09afde","user":{"login":"kenjewu","id":27672489,"node_id":"MDQ6VXNlcjI3NjcyNDg5","avatar_url":"https://avatars0.githubusercontent.com/u/27672489?v=4","gravatar_id":"","url":"https://api.github.com/users/kenjewu","html_url":"https://github.com/kenjewu","followers_url":"https://api.github.com/users/kenjewu/followers","following_url":"https://api.github.com/users/kenjewu/following{/other_user}","gists_url":"https://api.github.com/users/kenjewu/gists{/gist_id}","starred_url":"https://api.github.com/users/kenjewu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kenjewu/subscriptions","organizations_url":"https://api.github.com/users/kenjewu/orgs","repos_url":"https://api.github.com/users/kenjewu/repos","events_url":"https://api.github.com/users/kenjewu/events{/privacy}","received_events_url":"https://api.github.com/users/kenjewu/received_events","type":"User","site_admin":false},"repo":{"id":149714601,"node_id":"MDEwOlJlcG9zaXRvcnkxNDk3MTQ2MDE=","name":"gluon-nlp","full_name":"kenjewu/gluon-nlp","private":false,"owner":{"login":"kenjewu","id":27672489,"node_id":"MDQ6VXNlcjI3NjcyNDg5","avatar_url":"https://avatars0.githubusercontent.com/u/27672489?v=4","gravatar_id":"","url":"https://api.github.com/users/kenjewu","html_url":"https://github.com/kenjewu","followers_url":"https://api.github.com/users/kenjewu/followers","following_url":"https://api.github.com/users/kenjewu/following{/other_user}","gists_url":"https://api.github.com/users/kenjewu/gists{/gist_id}","starred_url":"https://api.github.com/users/kenjewu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kenjewu/subscriptions","organizations_url":"https://api.github.com/users/kenjewu/orgs","repos_url":"https://api.github.com/users/kenjewu/repos","events_url":"https://api.github.com/users/kenjewu/events{/privacy}","received_events_url":"https://api.github.com/users/kenjewu/received_events","type":"User","site_admin":false},"html_url":"https://github.com/kenjewu/gluon-nlp","description":"NLP made easy","fork":true,"url":"https://api.github.com/repos/kenjewu/gluon-nlp","forks_url":"https://api.github.com/repos/kenjewu/gluon-nlp/forks","keys_url":"https://api.github.com/repos/kenjewu/gluon-nlp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kenjewu/gluon-nlp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kenjewu/gluon-nlp/teams","hooks_url":"https://api.github.com/repos/kenjewu/gluon-nlp/hooks","issue_events_url":"https://api.github.com/repos/kenjewu/gluon-nlp/issues/events{/number}","events_url":"https://api.github.com/repos/kenjewu/gluon-nlp/events","assignees_url":"https://api.github.com/repos/kenjewu/gluon-nlp/assignees{/user}","branches_url":"https://api.github.com/repos/kenjewu/gluon-nlp/branches{/branch}","tags_url":"https://api.github.com/repos/kenjewu/gluon-nlp/tags","blobs_url":"https://api.github.com/repos/kenjewu/gluon-nlp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kenjewu/gluon-nlp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kenjewu/gluon-nlp/git/refs{/sha}","trees_url":"https://api.github.com/repos/kenjewu/gluon-nlp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kenjewu/gluon-nlp/statuses/{sha}","languages_url":"https://api.github.com/repos/kenjewu/gluon-nlp/languages","stargazers_url":"https://api.github.com/repos/kenjewu/gluon-nlp/stargazers","contributors_url":"https://api.github.com/repos/kenjewu/gluon-nlp/contributors","subscribers_url":"https://api.github.com/repos/kenjewu/gluon-nlp/subscribers","subscription_url":"https://api.github.com/repos/kenjewu/gluon-nlp/subscription","commits_url":"https://api.github.com/repos/kenjewu/gluon-nlp/commits{/sha}","git_commits_url":"https://api.github.com/repos/kenjewu/gluon-nlp/git/commits{/sha}","comments_url":"https://api.github.com/repos/kenjewu/gluon-nlp/comments{/number}","issue_comment_url":"https://api.github.com/repos/kenjewu/gluon-nlp/issues/comments{/number}","contents_url":"https://api.github.com/repos/kenjewu/gluon-nlp/contents/{+path}","compare_url":"https://api.github.com/repos/kenjewu/gluon-nlp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kenjewu/gluon-nlp/merges","archive_url":"https://api.github.com/repos/kenjewu/gluon-nlp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kenjewu/gluon-nlp/downloads","issues_url":"https://api.github.com/repos/kenjewu/gluon-nlp/issues{/number}","pulls_url":"https://api.github.com/repos/kenjewu/gluon-nlp/pulls{/number}","milestones_url":"https://api.github.com/repos/kenjewu/gluon-nlp/milestones{/number}","notifications_url":"https://api.github.com/repos/kenjewu/gluon-nlp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kenjewu/gluon-nlp/labels{/name}","releases_url":"https://api.github.com/repos/kenjewu/gluon-nlp/releases{/id}","deployments_url":"https://api.github.com/repos/kenjewu/gluon-nlp/deployments","created_at":"2018-09-21T05:33:31Z","updated_at":"2019-05-27T11:15:16Z","pushed_at":"2019-05-27T18:33:15Z","git_url":"git://github.com/kenjewu/gluon-nlp.git","ssh_url":"git@github.com:kenjewu/gluon-nlp.git","clone_url":"https://github.com/kenjewu/gluon-nlp.git","svn_url":"https://github.com/kenjewu/gluon-nlp","homepage":"http://gluon-nlp.mxnet.io","size":4078,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"dmlc:master","ref":"master","sha":"85c27ec7223505aa42633c6afc2609a2b336c9c3","user":{"login":"dmlc","id":11508361,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTA4MzYx","avatar_url":"https://avatars2.githubusercontent.com/u/11508361?v=4","gravatar_id":"","url":"https://api.github.com/users/dmlc","html_url":"https://github.com/dmlc","followers_url":"https://api.github.com/users/dmlc/followers","following_url":"https://api.github.com/users/dmlc/following{/other_user}","gists_url":"https://api.github.com/users/dmlc/gists{/gist_id}","starred_url":"https://api.github.com/users/dmlc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmlc/subscriptions","organizations_url":"https://api.github.com/users/dmlc/orgs","repos_url":"https://api.github.com/users/dmlc/repos","events_url":"https://api.github.com/users/dmlc/events{/privacy}","received_events_url":"https://api.github.com/users/dmlc/received_events","type":"Organization","site_admin":false},"repo":{"id":128121076,"node_id":"MDEwOlJlcG9zaXRvcnkxMjgxMjEwNzY=","name":"gluon-nlp","full_name":"dmlc/gluon-nlp","private":false,"owner":{"login":"dmlc","id":11508361,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExNTA4MzYx","avatar_url":"https://avatars2.githubusercontent.com/u/11508361?v=4","gravatar_id":"","url":"https://api.github.com/users/dmlc","html_url":"https://github.com/dmlc","followers_url":"https://api.github.com/users/dmlc/followers","following_url":"https://api.github.com/users/dmlc/following{/other_user}","gists_url":"https://api.github.com/users/dmlc/gists{/gist_id}","starred_url":"https://api.github.com/users/dmlc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmlc/subscriptions","organizations_url":"https://api.github.com/users/dmlc/orgs","repos_url":"https://api.github.com/users/dmlc/repos","events_url":"https://api.github.com/users/dmlc/events{/privacy}","received_events_url":"https://api.github.com/users/dmlc/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dmlc/gluon-nlp","description":"NLP made easy","fork":false,"url":"https://api.github.com/repos/dmlc/gluon-nlp","forks_url":"https://api.github.com/repos/dmlc/gluon-nlp/forks","keys_url":"https://api.github.com/repos/dmlc/gluon-nlp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dmlc/gluon-nlp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dmlc/gluon-nlp/teams","hooks_url":"https://api.github.com/repos/dmlc/gluon-nlp/hooks","issue_events_url":"https://api.github.com/repos/dmlc/gluon-nlp/issues/events{/number}","events_url":"https://api.github.com/repos/dmlc/gluon-nlp/events","assignees_url":"https://api.github.com/repos/dmlc/gluon-nlp/assignees{/user}","branches_url":"https://api.github.com/repos/dmlc/gluon-nlp/branches{/branch}","tags_url":"https://api.github.com/repos/dmlc/gluon-nlp/tags","blobs_url":"https://api.github.com/repos/dmlc/gluon-nlp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dmlc/gluon-nlp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dmlc/gluon-nlp/git/refs{/sha}","trees_url":"https://api.github.com/repos/dmlc/gluon-nlp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dmlc/gluon-nlp/statuses/{sha}","languages_url":"https://api.github.com/repos/dmlc/gluon-nlp/languages","stargazers_url":"https://api.github.com/repos/dmlc/gluon-nlp/stargazers","contributors_url":"https://api.github.com/repos/dmlc/gluon-nlp/contributors","subscribers_url":"https://api.github.com/repos/dmlc/gluon-nlp/subscribers","subscription_url":"https://api.github.com/repos/dmlc/gluon-nlp/subscription","commits_url":"https://api.github.com/repos/dmlc/gluon-nlp/commits{/sha}","git_commits_url":"https://api.github.com/repos/dmlc/gluon-nlp/git/commits{/sha}","comments_url":"https://api.github.com/repos/dmlc/gluon-nlp/comments{/number}","issue_comment_url":"https://api.github.com/repos/dmlc/gluon-nlp/issues/comments{/number}","contents_url":"https://api.github.com/repos/dmlc/gluon-nlp/contents/{+path}","compare_url":"https://api.github.com/repos/dmlc/gluon-nlp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dmlc/gluon-nlp/merges","archive_url":"https://api.github.com/repos/dmlc/gluon-nlp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dmlc/gluon-nlp/downloads","issues_url":"https://api.github.com/repos/dmlc/gluon-nlp/issues{/number}","pulls_url":"https://api.github.com/repos/dmlc/gluon-nlp/pulls{/number}","milestones_url":"https://api.github.com/repos/dmlc/gluon-nlp/milestones{/number}","notifications_url":"https://api.github.com/repos/dmlc/gluon-nlp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dmlc/gluon-nlp/labels{/name}","releases_url":"https://api.github.com/repos/dmlc/gluon-nlp/releases{/id}","deployments_url":"https://api.github.com/repos/dmlc/gluon-nlp/deployments","created_at":"2018-04-04T20:57:13Z","updated_at":"2019-05-28T19:03:06Z","pushed_at":"2019-05-28T02:52:44Z","git_url":"git://github.com/dmlc/gluon-nlp.git","ssh_url":"git@github.com:dmlc/gluon-nlp.git","clone_url":"https://github.com/dmlc/gluon-nlp.git","svn_url":"https://github.com/dmlc/gluon-nlp","homepage":"http://gluon-nlp.mxnet.io","size":7063,"stargazers_count":1549,"watchers_count":1549,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":329,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":118,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":329,"open_issues":118,"watchers":1549,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733"},"html":{"href":"https://github.com/dmlc/gluon-nlp/pull/733"},"issue":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/issues/733"},"comments":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/issues/733/comments"},"review_comments":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733/comments"},"review_comment":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/pulls/733/commits"},"statuses":{"href":"https://api.github.com/repos/dmlc/gluon-nlp/statuses/2e4f2b335c13040d79d3db42af3d7d8adc09afde"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"xcgoner"}}