在FastAPI中使用Setenece BERT模型对句子进行编码会更改通过Jupyter和python脚本得出的结果

问题描述

系统

  • macbook pro
  • OSX 10.15.5(Catalina)
  • Docker版本19.03.12,内部版本48a66213fe

图书馆

  • uvicorn == 0.11.8
  • fastapi == 0.61.0
  • torch == 1.6.0
  • transformers == 3.0.2
  • sentence-transformers == 0.3.2
  • scikit-learn == 0.20.0
  • scipy == 1.4.1
  • pandas == 0.23.4
  • jupyter == 1.0.0

详细信息

我使用Colaboratory来微调Setence BERT并保存该模型。 然后,我去了本地,并使用Docker构建了包括jupyter和FastAPI的环境,在该环境中,我能够确认使用Docker启动的Jupyter保存的模型返回的评估结果与协作实验室相同。 当我使用该模型时,当我在与Jupyter相同的Docker环境中使用FastAPI启动时,得到了不同的结果。 在此流中输入的所有文本都是相同的。

分析表明SentenceTransformer加载了模型然后对其进行编码,发现它计算出的嵌入完全不同。

谢谢您的建议。

解决方法

对不起,我使用日语模型,但是我将默认的BertTokenizer转换为BertJapaneseTokenizer。

更改默认令牌生成器可解决此问题。