December 31, 2019

为 transformers 加一个 mirror

为 transformers 加一个 mirror

要说 2019 年下半年 nlp里面最好玩的应该就算是这个「变形金刚」( 🤗 Transformers: State-of-the-art Natural Language Processing for TensorFlow 2.0 and PyTorch. ),了。

截止 2019年最后一天,github 上该 lib 的 star 已经到了 19.9k,有希望破 20k!

这个 lib 做的事情也很简单,就是把几乎所有 transformer 架构的、用于 NLP 的,基于Tensorflow2 和 Pytorch 的模型 finetine 任务都放在一起,流程统一起来,极大方便了任务的搭建。

变形金刚虽好,但访问很难。

Huggingface 团队把整理好的模型、配置文件都放在 Amazon 的 S3 上,国内访问 S3 一向是不稳定的(跟其他不存在的网站相比,能访问就 不 错 了...)。所以要搭一个 mirror 方便访问,思路也很清晰:

  1. 直接找一台便宜的 VPS
  2. 挂一个大于 300G 的硬盘,最好是 SSD的
  3. 写个脚本定时从 S3 更新内容
  4. vps 上开个 web server,比如 nginx
  5. 随便找个 2 级域名指过去,做一个到 models.huggingface.co 的 alias
  6. 在 transformers 代码中搜索 https://s3.amazonaws.com,替换成你的 2 级域名,比如我的是 http://transformers.spacy.cn,替换完了之后的路径应该长类似这个模样:http://transformers.spacy.cn/models.huggingface.co/bert/pplm/bow/legal.txt
  7. 然后最重要的一步是把 transformers 本地安装一下,到源码的根目录执行:
    pip install -e .
    

然后再去跑 transfomers 的各种例子(这里用的是一个 transformers 之上的库,叫 simpletransformer), 速度还凑合 2M~ 吧,回头有空可以再想法优化一下,比如国内开一个 vps 之类的

-----2019-12-31---8.43.28-1


update: 2019-12-31

反向代理:

upstream s3 {
    server s3.amazonaws.com:80;
}


server {
    listen 80;

    server_name xx.yy.zz;

    location / {
        proxy_pass_header Server;
        proxy_set_header Host s3.amazonaws.com;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://s3;
    }
}