【AI實戰】BERT 文本分類模型自動化部署之 dockerfile

【AI實戰】BERT 文本分類模型自動化部署之 dockerfile

  • BERT
  • BERT 文本分類模型
    • 基于中文預訓練bert的文本分類模型
    • 針對多分類模型的loss函數
      • 樣本不均衡時
      • 多標簽分類時
  • dockerfile
    • 編寫 dockerfile
    • build鏡像
    • 運行docker
    • 測試服務
  • 參考

本文主要介紹:

  1. 基于BERT的文本分類模型,樣本不均衡的多分類loss函數的寫法
  2. dockerfile自動構建docker鏡像,服務部署

BERT

BERT 的全稱為 Bidirectional Encoder Representation from Transformers,是一個預訓練的語言表征模型。它強調了不再像以往一樣采用傳統的單向語言模型或者把兩個單向語言模型進行淺層拼接的方法進行預訓練,而是采用新的masked language model(MLM),以致能生成深度的雙向語言表征。

BERT 文本分類模型

基于中文預訓練bert的文本分類模型

基本架構:bert_model + dropout + 全連接層
代碼:

class BERTClass(torch.nn.Module):def __init__(self, num_class):super(BERTClass, self).__init__()self.bert_model = BertModel.from_pretrained('bert-base-chinese', return_dict=True)self.dropout = torch.nn.Dropout(0.3)self.linear = torch.nn.Linear(768, num_class)def forward(self, input_ids, attn_mask, token_type_ids):output = self.bert_model(input_ids, attention_mask=attn_mask, token_type_ids=token_type_ids)output_dropout = self.dropout(output.pooler_output)output = self.linear(output_dropout)return output

針對多分類模型的loss函數

樣本不均衡時

代碼:

class MultiClassFocalLossWithAlpha(nn.Module):def __init__(self, alpha, gamma=2, reduction='mean'):""":param alpha: alpha=[0.2, 0.3, 0.5] 權重系數列表,三分類中第0類權重0.2,第1類權重0.3,第2類權重0.5:param gamma: 困難樣本挖掘的gamma:param reduction:"""super(MultiClassFocalLossWithAlpha, self).__init__()self.alpha = alpha#torch.tensor(alpha)self.gamma = gammaself.reduction = reductiondef forward(self, pred, target_src):target = torch.argmax(target_src, axis = 1)alpha = self.alpha[target]  log_softmax = torch.log_softmax(pred, dim=1)logpt = torch.gather(log_softmax, dim=1, index=target.view(-1, 1))logpt = logpt.view(-1)ce_loss = -logpt pt = torch.exp(logpt) f_loss = alpha * (1 - pt) ** self.gamma * ce_loss if self.reduction == "mean":return torch.mean(f_loss)if self.reduction == "sum":return torch.sum(f_loss)return f_lossdef focal_loss(outputs, targets):import jsonwith open('./output/loss_weight.json') as f:data = f.read()loss_weight = json.loads(data)class_weight = torch.tensor(loss_weight['class_weight'])class_weight = class_weight.to(torch.device(device))loss = MultiClassFocalLossWithAlpha(alpha=class_weight)return loss.forward(outputs, targets)

多標簽分類時

代碼:

# BCEWithLogitsLoss combines a Sigmoid layer and the BCELoss in one single class. 
# This version is more numerically stable than using a plain Sigmoid followed 
# by a BCELoss as, by combining the operations into one layer, 
# we take advantage of the log-sum-exp trick for numerical stability.
def loss_fn(outputs, targets):import jsonwith open('./output/loss_weight.json') as f:data = f.read()loss_weight = json.loads(data)class_weight = torch.tensor(loss_weight['class_weight'])pos_weight = torch.tensor(loss_weight['pos_weight'])class_weight = class_weight.to(torch.device(device))pos_weight = pos_weight.to(torch.device(device))loss_fn2 = torch.nn.BCEWithLogitsLoss(weight=class_weight, pos_weight=pos_weight)outputs = outputs.float()targets = targets.float()loss = loss_fn2(outputs, targets)return loss

dockerfile

Dockerfile 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明。

編寫 dockerfile

以python3.9來構建 bert 模型運行環境的鏡像,基于 torch 的 CPU 版本

Dockerfile:

FROM ludotech/python3.9-poetry:latestADD bert_model.tar /homeRUN ["pip", "--no-cache-dir", "install", "-r", "/home/bert_model/requirements.txt", "-i", "https://pypi.tuna.tsinghua.edu.cn/simple"]RUN chmod -x /home/bert_model/run.sh
CMD bash /home/bert_model/run.sh

其中:

  • bert_model.tar 為完整的代碼、模型、數據等
  • requirements.txt 包含完整的依賴庫
  • run.sh 中為啟動模型的腳步,可以支持多進程啟動

requirements.txt :

urllib3==1.26.16
charset-normalizer==3.2.0
Flask==2.3.2
gensim==4.3.1
h5py==3.9.0
huggingface-hub==0.16.4
importlib-metadata==6.8.0
importlib-resources==6.0.0
ipython==8.14.0
jieba==0.42.1
joblib==1.3.1
matplotlib==3.7.2
matplotlib-inline==0.1.6
nltk==3.8.1
numpy==1.23.0
packaging==23.1
pandas==2.0.3
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
Pillow==10.0.0
platformdirs==3.10.0
prompt-toolkit==3.0.39
protobuf==4.23.4
psutil==5.9.5
pyparsing==3.0.9
python-dateutil==2.8.2
pytorch-pretrained-bert==0.6.2
pytz==2023.3
PyYAML==6.0
pyzmq==25.1.0
safetensors==0.3.1
scikit-learn==1.3.0
scipy==1.11.1
sentencepiece==0.1.99
tensorboardX==2.6.2
threadpoolctl==3.2.0
tokenizers==0.12.1
torch==1.10.1
tqdm==4.65.0
transformers==4.30.2

run.sh(我啟動了 2 個服務進程):

cd /home/bert_model
python deploy.py &cd /home/bert_model
python train_srv.py &touch /home/a
tail -f /home/a

build鏡像

  • 文件準備:

    $ ls
    build.sh  Dockerfile  bert_model.tar 
    

    其中:
    build.sh:

    docker build -t  bert_model:v1.
    
  • 執行build

    sh build.sh
    

    如果是正常,則會輸出如下:

    $ sh build.sh  
    Sending build context to Docker daemon  822.3MB
    Step 1/5 : FROM ludotech/python3.9-poetry:latest---> bbbc285de928
    Step 2/5 : ADD bert_model:v1.tar /home---> fb481b25dbfd
    Step 3/5 : RUN ["pip", "--no-cache-dir", "install", "-r", "/home/bert_model:v1/requirements.txt", "-i", "https://pypi.tuna.tsinghua.edu.cn/simple"]---> Running in 122bad5d6b64
    Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    Collecting charset-normalizer==3.2.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f9/0d/514be8597d7a96243e5467a37d337b9399cec117a513fcf9328405d911c0/charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (202 kB)
    Collecting Flask==2.3.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fa/1a/f191d32818e5cd985bdd3f47a6e4f525e2db1ce5e8150045ca0c31813686/Flask-2.3.2-py3-none-any.whl (96 kB)
    Collecting gensim==4.3.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/79/93/bb490709bb24004d3d4c20005e19939ef1e1ee62ed7698e85c186745b01d/gensim-4.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (26.5 MB)
    Collecting h5py==3.9.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4f/79/8e6e05bc4954ebdb8b9c587f780a11f28790585798bd15a8e4870cfc02bc/h5py-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB)
    Collecting huggingface-hub==0.16.4Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/c4/adcbe9a696c135578cabcbdd7331332daad4d49b7c43688bc2d36b3a47d2/huggingface_hub-0.16.4-py3-none-any.whl (268 kB)
    Collecting importlib-metadata==6.8.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/cc/37/db7ba97e676af155f5fcb1a35466f446eadc9104e25b83366e8088c9c926/importlib_metadata-6.8.0-py3-none-any.whl (22 kB)
    Collecting importlib-resources==6.0.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/29/d1/bed03eca30aa05aaf6e0873de091f9385c48705c4a607c2dfe3edbe543e8/importlib_resources-6.0.0-py3-none-any.whl (31 kB)
    Collecting ipython==8.14.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/52/d1/f70cdafba20030cbc1412d7a7d6a89c5035071835cc50e47fc5ed8da553c/ipython-8.14.0-py3-none-any.whl (798 kB)
    Collecting jieba==0.42.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c6/cb/18eeb235f833b726522d7ebed54f2278ce28ba9438e3135ab0278d9792a2/jieba-0.42.1.tar.gz (19.2 MB)
    Collecting joblib==1.3.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/28/08/9dcdaa5aac4634e4c23af26d92121f7ce445c630efa0d3037881ae2407fb/joblib-1.3.1-py3-none-any.whl (301 kB)
    Collecting matplotlib==3.7.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/47/b9/6c0daa9b953a80b4e6933bf6a11a2d0633f257e84ee5995c5fd35de564c9/matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
    Collecting matplotlib-inline==0.1.6Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f2/51/c34d7a1d528efaae3d8ddb18ef45a41f284eacf9e514523b191b7d0872cc/matplotlib_inline-0.1.6-py3-none-any.whl (9.4 kB)
    Collecting nltk==3.8.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a6/0a/0d20d2c0f16be91b9fa32a77b76c60f9baf6eba419e5ef5deca17af9c582/nltk-3.8.1-py3-none-any.whl (1.5 MB)
    Collecting numpy==1.23.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/da/0e/496e529f440f528273f6847e14d7b132b0556a824fc2af36e8afd8e6a020/numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)
    Collecting packaging==23.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl (48 kB)
    Collecting pandas==2.0.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9e/0d/91a9fd2c202f2b1d97a38ab591890f86480ecbb596cbc56d035f6f23fdcc/pandas-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB)
    Collecting parso==0.8.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/05/63/8011bd08a4111858f79d2b09aad86638490d62fbf881c44e434a6dfca87b/parso-0.8.3-py2.py3-none-any.whl (100 kB)
    Collecting pexpect==4.8.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/39/7b/88dbb785881c28a102619d46423cb853b46dbccc70d3ac362d99773a78ce/pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
    Collecting pickleshare==0.7.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
    Collecting Pillow==10.0.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/50/e5/0d484d1ac71b934638f91b7156203ba5bf3eb12f596b616a68a85c123808/Pillow-10.0.0-cp39-cp39-manylinux_2_28_x86_64.whl (3.4 MB)
    Collecting platformdirs==3.10.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/14/51/fe5a0d6ea589f0d4a1b97824fb518962ad48b27cd346dcdfa2405187997a/platformdirs-3.10.0-py3-none-any.whl (17 kB)
    Collecting prompt-toolkit==3.0.39Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a9/b4/ba77c84edf499877317225d7b7bc047a81f7c2eed9628eeb6bab0ac2e6c9/prompt_toolkit-3.0.39-py3-none-any.whl (385 kB)
    Collecting protobuf==4.23.4Downloading https://pypi.tuna.tsinghua.edu.cn/packages/01/cb/445b3e465abdb8042a41957dc8f60c54620dc7540dbcf9b458a921531ca2/protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl (304 kB)
    Collecting psutil==5.9.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/af/4d/389441079ecef400e2551a3933224885a7bde6b8a4810091d628cdd75afe/psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (282 kB)
    Collecting pyparsing==3.0.9Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl (98 kB)
    Collecting python-dateutil==2.8.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
    Collecting pytorch-pretrained-bert==0.6.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d7/e0/c08d5553b89973d9a240605b9c12404bcf8227590de62bae27acbcfe076b/pytorch_pretrained_bert-0.6.2-py3-none-any.whl (123 kB)
    Collecting pytz==2023.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/99/ad6bd37e748257dd70d6f85d916cafe79c0b0f5e2e95b11f7fbc82bf3110/pytz-2023.3-py2.py3-none-any.whl (502 kB)
    Collecting PyYAML==6.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/12/fc/a4d5a7554e0067677823f7265cb3ae22aed8a238560b5133b58cda252dad/PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (661 kB)
    Collecting pyzmq==25.1.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/94/4b/1093172b73984b568d9f1a72bcd61793822fab40aa571f5d6ed9db6234cb/pyzmq-25.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB)
    Collecting safetensors==0.3.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/60/c7/1911e04710666eb79ca3311a4e91b669419a1f23c2b2619005165104368c/safetensors-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
    Collecting scikit-learn==1.3.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d4/61/966d3238f6cbcbb13350d31bd0accfc5efdf9e349cd2a42d9761b8b67a18/scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.9 MB)
    Collecting scipy==1.11.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/08/25/035fe07fc32c5a8b314f882faa9d4817223fa5faf524d3fedcf17a4b9d22/scipy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.5 MB)
    Collecting sentencepiece==0.1.99Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6b/22/4157918b2112d47014fb1e79b0dd6d5a141b8d1b049bae695d405150ebaf/sentencepiece-0.1.99-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
    Collecting tensorboardX==2.6.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/44/7b/eee50dcadcee4c674353ca207fdcd53a5b1f382021af1ed1797f9c0c45d2/tensorboardX-2.6.2-py2.py3-none-any.whl (101 kB)
    Collecting threadpoolctl==3.2.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/81/12/fd4dea011af9d69e1cad05c75f3f7202cdcbeac9b712eea58ca779a72865/threadpoolctl-3.2.0-py3-none-any.whl (15 kB)
    Collecting tokenizers==0.12.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/60/fc/3da9736965bf6edd96e8b098984c9f4559c4a1cc5be563436cd228ad1e69/tokenizers-0.12.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.6 MB)
    Collecting torch==1.10.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2c/c8/dcef19018d2fe730ecacf47650d3d6e8d6fe545f02fbdbde0174e0279f02/torch-1.10.1-cp39-cp39-manylinux1_x86_64.whl (881.9 MB)
    Collecting tqdm==4.65.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e6/02/a2cff6306177ae6bc73bc0665065de51dfb3b9db7373e122e2735faf0d97/tqdm-4.65.0-py3-none-any.whl (77 kB)
    Collecting transformers==4.30.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5b/0b/e45d26ccd28568013523e04f325432ea88a442b4e3020b757cf4361f0120/transformers-4.30.2-py3-none-any.whl (7.2 MB)
    Collecting urllib3==1.26.16Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c5/05/c214b32d21c0b465506f95c4f28ccbcba15022e000b043b72b3df7728471/urllib3-1.26.16-py2.py3-none-any.whl (143 kB)
    Collecting blinker>=1.6.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/0d/f1/5f39e771cd730d347539bb74c6d496737b9d5f0a53bc9fdbf3e170f1ee48/blinker-1.6.2-py3-none-any.whl (13 kB)
    Collecting click>=8.1.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1a/70/e63223f8116931d365993d4a6b7ef653a4d920b41d03de7c59499962821f/click-8.1.6-py3-none-any.whl (97 kB)
    Collecting contourpy>=1.0.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/38/6f/5382bdff9dda60cb17cef6dfa2bad3e6edacffd5c2243e282e851c63f721/contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300 kB)
    Collecting cycler>=0.10Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl (6.4 kB)
    Collecting fonttools>=4.22.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/91/0e/8303b815e3bcc211a2da3e4427748cb963247594837dceb051e28d4e4b66/fonttools-4.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)
    Collecting itsdangerous>=2.1.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/68/5f/447e04e828f47465eeab35b5d408b7ebaaaee207f48b7136c5a7267a30ae/itsdangerous-2.1.2-py3-none-any.whl (15 kB)
    Collecting jedi>=0.16Downloading https://pypi.tuna.tsinghua.edu.cn/packages/8e/46/7e3ae3aa2dcfcffc5138c6cef5448523218658411c84a2000bf75c8d3ec1/jedi-0.19.0-py2.py3-none-any.whl (1.6 MB)
    Collecting Jinja2>=3.1.2Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl (133 kB)
    Collecting kiwisolver>=1.0.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a4/36/c414d75be311ce97ef7248edcc4fc05afae2998641bf6b592d43a9dee581/kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.6 MB)
    Collecting MarkupSafe>=2.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/de/63/cb7e71984e9159ec5f45b5e81e896c8bdd0e45fe3fc6ce02ab497f0d790e/MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
    Collecting ptyprocess>=0.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
    Collecting pygments>=2.4.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/43/88/29adf0b44ba6ac85045e63734ae0997d3c58d8b1a91c914d240828d0d73d/Pygments-2.16.1-py3-none-any.whl (1.2 MB)
    Collecting regex>=2021.8.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c0/f4/278e305e02245937579a7952b8a3205116b4d2480a3c03fa11e599b773d6/regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (771 kB)
    Collecting six>=1.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)
    Collecting smart-open>=1.8.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/47/80/c2d1bdd36c6b64ae566d9a29724291510e4f3796ce99639d3c2999286284/smart_open-6.3.0-py3-none-any.whl (56 kB)
    Collecting traitlets>=5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/77/75/c28e9ef7abec2b7e9ff35aea3e0be6c1aceaf7873c26c95ae1f0d594de71/traitlets-5.9.0-py3-none-any.whl (117 kB)
    Collecting typing-extensions>=3.7.4.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ec/6b/63cc3df74987c36fe26157ee12e09e8f9db4de771e0f3404263117e75b95/typing_extensions-4.7.1-py3-none-any.whl (33 kB)
    Collecting tzdata>=2022.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d5/fb/a79efcab32b8a1f1ddca7f35109a50e4a80d42ac1c9187ab46522b2407d7/tzdata-2023.3-py2.py3-none-any.whl (341 kB)
    Collecting Werkzeug>=2.3.3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/9b/59/a7c32e3d8d0e546a206e0552a2c04444544f15c1da4a01df8938d20c6ffc/werkzeug-2.3.7-py3-none-any.whl (242 kB)
    Collecting zipp>=0.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/8c/08/d3006317aefe25ea79d3b76c9650afabaf6d63d1c8443b236e7405447503/zipp-3.16.2-py3-none-any.whl (7.2 kB)
    Collecting backcallDownloading https://pypi.tuna.tsinghua.edu.cn/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl (11 kB)
    Collecting boto3Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ec/9a/c0837684f1ab666add90e639944575f7325301d59d19f72b6acf6c850b78/boto3-1.28.27-py3-none-any.whl (135 kB)
    Collecting botocore<1.32.0,>=1.31.27Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e8/82/33a94da51ac24033fe83400fd08f5a54dfca5179761e0d3c8935bce538d9/botocore-1.31.27-py3-none-any.whl (11.1 MB)
    Collecting jmespath<2.0.0,>=0.7.1Downloading https://pypi.tuna.tsinghua.edu.cn/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl (20 kB)
    Collecting s3transfer<0.7.0,>=0.6.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/17/a3b666f5ef9543cfd3c661d39d1e193abb9649d0cfbbfee3cf3b51d5af02/s3transfer-0.6.2-py3-none-any.whl (79 kB)
    Collecting decoratorDownloading https://pypi.tuna.tsinghua.edu.cn/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl (9.1 kB)
    Collecting filelockDownloading https://pypi.tuna.tsinghua.edu.cn/packages/00/45/ec3407adf6f6b5bf867a4462b2b0af27597a26bd3cd6e2534cb6ab029938/filelock-3.12.2-py3-none-any.whl (10 kB)
    Collecting fsspecDownloading https://pypi.tuna.tsinghua.edu.cn/packages/e3/bd/4c0a4619494188a9db5d77e2100ab7d544a42e76b2447869d8e124e981d8/fsspec-2023.6.0-py3-none-any.whl (163 kB)
    Collecting requestsDownloading https://pypi.tuna.tsinghua.edu.cn/packages/70/8e/0e2d847013cb52cd35b38c009bb167a1a26b2ce6cd6965bf26b47bc0bf44/requests-2.31.0-py3-none-any.whl (62 kB)
    Collecting certifi>=2017.4.17Downloading https://pypi.tuna.tsinghua.edu.cn/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl (158 kB)
    Collecting idna<4,>=2.5Downloading https://pypi.tuna.tsinghua.edu.cn/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl (61 kB)
    Collecting stack-dataDownloading https://pypi.tuna.tsinghua.edu.cn/packages/6a/81/aa96c25c27f78cdc444fec27d80f4c05194c591465e491a1358d8a035bc1/stack_data-0.6.2-py3-none-any.whl (24 kB)
    Collecting asttokens>=2.1.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl (26 kB)
    Collecting executing>=1.2.0Downloading https://pypi.tuna.tsinghua.edu.cn/packages/28/3c/bc3819dd8b1a1588c9215a87271b6178cc5498acaa83885211f5d4d9e693/executing-1.2.0-py2.py3-none-any.whl (24 kB)
    Collecting pure-evalDownloading https://pypi.tuna.tsinghua.edu.cn/packages/2b/27/77f9d5684e6bce929f5cfe18d6cfbe5133013c06cb2fbf5933670e60761d/pure_eval-0.2.2-py3-none-any.whl (11 kB)
    Collecting wcwidthDownloading https://pypi.tuna.tsinghua.edu.cn/packages/20/f4/c0584a25144ce20bfcf1aecd041768b8c762c1eb0aa77502a3f0baa83f11/wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
    Building wheels for collected packages: jiebaBuilding wheel for jieba (setup.py): startedBuilding wheel for jieba (setup.py): finished with status 'done'Created wheel for jieba: filename=jieba-0.42.1-py3-none-any.whl size=19314477 sha256=57e3819b1f7805dacd361648a3cb7f041a401078f47663d2f5d58f4523b2c1c7Stored in directory: /tmp/pip-ephem-wheel-cache-oey5ckcm/wheels/1a/76/68/b6d79c4db704bb18d54f6a73ab551185f4711f9730c0c15d97
    Successfully built jieba
    Installing collected packages: six, urllib3, python-dateutil, jmespath, idna, charset-normalizer, certifi, botocore, zipp, wcwidth, typing-extensions, traitlets, tqdm, s3transfer, requests, PyYAML, pure-eval, ptyprocess, parso, packaging, numpy, MarkupSafe, fsspec, filelock, executing, asttokens, Werkzeug, tzdata, torch, tokenizers, threadpoolctl, stack-data, smart-open, scipy, safetensors, regex, pytz, pyparsing, pygments, protobuf, prompt-toolkit, Pillow, pickleshare, pexpect, matplotlib-inline, kiwisolver, joblib, Jinja2, jedi, itsdangerous, importlib-resources, importlib-metadata, huggingface-hub, fonttools, decorator, cycler, contourpy, click, boto3, blinker, backcall, transformers, tensorboardX, sentencepiece, scikit-learn, pyzmq, pytorch-pretrained-bert, psutil, platformdirs, pandas, nltk, matplotlib, jieba, ipython, h5py, gensim, Flask
    Successfully installed Flask-2.3.2 Jinja2-3.1.2 MarkupSafe-2.1.3 Pillow-10.0.0 PyYAML-6.0 Werkzeug-2.3.7 asttokens-2.2.1 backcall-0.2.0 blinker-1.6.2 boto3-1.28.27 botocore-1.31.27 certifi-2023.7.22 charset-normalizer-3.2.0 click-8.1.6 contourpy-1.1.0 cycler-0.11.0 decorator-5.1.1 executing-1.2.0 filelock-3.12.2 fonttools-4.42.0 fsspec-2023.6.0 gensim-4.3.1 h5py-3.9.0 huggingface-hub-0.16.4 idna-3.4 importlib-metadata-6.8.0 importlib-resources-6.0.0 ipython-8.14.0 itsdangerous-2.1.2 jedi-0.19.0 jieba-0.42.1 jmespath-1.0.1 joblib-1.3.1 kiwisolver-1.4.4 matplotlib-3.7.2 matplotlib-inline-0.1.6 nltk-3.8.1 numpy-1.23.0 packaging-23.1 pandas-2.0.3 parso-0.8.3 pexpect-4.8.0 pickleshare-0.7.5 platformdirs-3.10.0 prompt-toolkit-3.0.39 protobuf-4.23.4 psutil-5.9.5 ptyprocess-0.7.0 pure-eval-0.2.2 pygments-2.16.1 pyparsing-3.0.9 python-dateutil-2.8.2 pytorch-pretrained-bert-0.6.2 pytz-2023.3 pyzmq-25.1.0 regex-2023.8.8 requests-2.31.0 s3transfer-0.6.2 safetensors-0.3.1 scikit-learn-1.3.0 scipy-1.11.1 sentencepiece-0.1.99 six-1.16.0 smart-open-6.3.0 stack-data-0.6.2 tensorboardX-2.6.2 threadpoolctl-3.2.0 tokenizers-0.12.1 torch-1.10.1 tqdm-4.65.0 traitlets-5.9.0 transformers-4.30.2 typing-extensions-4.7.1 tzdata-2023.3 urllib3-1.26.16 wcwidth-0.2.6 zipp-3.16.2
    WARNING: You are using pip version 20.3.3; however, version 23.2.1 is available.
    You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
    Removing intermediate container 122bad5d6b64---> 532901e8e45d
    Step 4/5 : RUN chmod -x /home/bert_model:v1/run.sh---> Running in 57624b20b496
    Removing intermediate container 57624b20b496---> 4b68e0e4fcd5
    Step 5/5 : CMD bash /home/bert_model:v1/run.sh---> Running in 1deeb0da3ee4
    Removing intermediate container 1deeb0da3ee4---> 1309aef51499
    Successfully built 1309aef51499
    Successfully tagged bert_model:v1
    d22928152eb3cfc123ea321cc25a75980d88f7dfee90a762781892c71c54c13
    

運行docker

  • 創建 run_docker.sh
docker run -it -d \--name bert_model\-v /bee/xx/:/home/xx/ \-e TZ='Asia/Shanghai' \-p 12928:12345 \-p 12929:12346 \--shm-size 16G \bert_model:v1
  • 啟動服務
sh run_docker.sh

測試服務

使用curl測試服務是否正常:
我的服務是post:

curl -H "Content-Type:application/json" -X POST -d '{"text": "xxxxxx"}' http://localhost:12928/xxx

測試響應時間:

time curl -H "Content-Type:application/json" -X POST -d '{"text": "xxxxxx"}' http://localhost:12928/xxx

返回:

{"code": 10000, "label": ["aaa"]}
real    0m0.157s
user    0m0.010s
sys     0m0.006s

參考

  1. https://www.runoob.com/docker/docker-dockerfile.html
  2. https://zhuanlan.zhihu.com/p/98855346

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

卷積神經網絡CNN

卷積神經網絡CNN 1 應用領域1 檢測任務2 分類和檢索3 超分辨率重構4 醫學任務5 無人駕駛6 人臉識別 2 卷積的作用3 卷積特征值計算方法4 得到特征圖表示5 步長和卷積核大小對結果的影響1 步長2 卷積核 6 邊緣填充方法7 特征圖尺寸計算與參數共享8 池化層的作用9 整體網絡架構10…

【GitLab私有倉庫】如何在Linux上用Gitlab搭建自己的私有庫并配置cpolar內網穿透?

文章目錄 前言1. 下載Gitlab2. 安裝Gitlab3. 啟動Gitlab4. 安裝cpolar5. 創建隧道配置訪問地址6. 固定GitLab訪問地址6.1 保留二級子域名6.2 配置二級子域名 7. 測試訪問二級子域名 前言 GitLab 是一個用于倉庫管理系統的開源項目&#xff0c;使用Git作為代碼管理工具&#xf…

ngModel和formControlName處理表單控件

ngModel 和 formControlName 不能同時在同一個表單控件上使用&#xff1b; 二者都用于在 Angular 中處理表單控件的值&#xff0c;但是它們的底層實現方式不同。 ngModel 是 Angular 提供的雙向數據綁定指令&#xff0c;它可以將表單控件的值與組件類中的屬性進行雙向綁定。當…

軟考筆記——10.項目管理

進度管理 進度管理就是采用科學的方法&#xff0c;確定進度目標&#xff0c;編制進度計劃和資源供應計劃&#xff0c;進行進度控制&#xff0c;在與質量、成本目標協調的基礎上&#xff0c;實現工期目標。 具體來說&#xff0c;包括以下過程&#xff1a; (1) 活動定義&#…

HLS實現FIR低通濾波器+System Generator仿真

硬件&#xff1a;ZYNQ7010 軟件&#xff1a;MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、MATLAB設計低通濾波器 FPGA系統時鐘 50MHz&#xff0c;也是采樣頻率。用 MATLAB 生成 1MHz 和 10MHz 的正弦波疊加的信號&#xff0c;并量化為 14bit 整數。把…

css 用過渡實現,鼠標離開li時,背景色緩慢消息的樣式

要實現鼠標懸停時背景顏色變為黃色&#xff0c;鼠標離開時背景顏色慢慢消失并變回白色的效果&#xff0c; 可以使用CSS的過渡&#xff08;transition&#xff09;屬性 li {background: #fff;color: #000;transition: background 0.5s ease-out; }li:hover {background: #fbb31…

Web網頁瀏覽器遠程訪問jupyter notebook服務器【內網穿透】

文章目錄 前言1. Python環境安裝2. Jupyter 安裝3. 啟動Jupyter Notebook4. 遠程訪問4.1 安裝配置cpolar內網穿透4.2 創建隧道映射本地端口 5. 固定公網地址 前言 Jupyter Notebook&#xff0c;它是一個交互式的數據科學和計算環境&#xff0c;支持多種編程語言&#xff0c;如…

Hyper-v導致Vmware window無法啟動崩潰記錄

最近有幾次vmware啟動window10直接崩潰情況&#xff0c;顯示藍屏報錯。一開始沒在意&#xff0c;以為是因為固態硬盤錯了幾個字節導致的&#xff1f; 但后來想想不對啊。vmware用了也有10來年了&#xff0c;穩得一筆&#xff0c;在仔細思考了一下后發現打不開的win10這三個虛擬…

Oracle/PL/SQL奇技淫巧之Lable標簽與循環控制

在一些存儲過程場景中&#xff0c;可能存在需要在滿足某些條件時跳出循環的場景&#xff0c; 但是在PL/SQL中&#xff0c;不能使用break語句直接跳出循環, 但是可以通過lable標簽的方式跳出循環&#xff0c;例&#xff1a; <<outer_loop>> FOR i IN 1..5 LOOPDBMS…

Python批量替換Excel和Word中的關鍵字

一、問題的提出 有時&#xff0c;我們手頭上有多個Excel或者Word文件&#xff0c;但是領導突然要求對某幾個術語進行批量的修改&#xff0c;你是不是有要崩潰的感覺。因為這么多文件&#xff0c;要一個一個地打開文件&#xff0c;再進行批量替換修改&#xff0c;幾個文件還好&…

設計模式之構建器(Builder)C++實現

1、構建器提出 在軟件功能開發中&#xff0c;有時面臨“一個復雜對象”的創建工作&#xff0c;該對象的每個功能接口由于需求的變化&#xff0c;會使每個功能接口發生變化&#xff0c;但是該對象使用每個功能實現一個接口的流程是穩定的。構建器就是解決該類現象的。構建就是定…

【Java】項目管理工具Maven的安裝與使用

文章目錄 1. Maven概述2. Maven的下載與安裝2.1 下載2.2 安裝 3. Maven倉庫配置3.1 修改本地倉庫配置3.2 修改遠程倉庫配置3.3 修改后的settings.xml 4. 使用Maven創建項目4.1 手工創建Java項目4.2 原型創建Java項目4.3 原型創建Web項目 5. Tomcat啟動Web項目5.1 使用Tomcat插件…

【CTF-web】備份是個好習慣(查找備份文件、雙寫繞過、md5加密繞過)

題目鏈接&#xff1a;https://ctf.bugku.com/challenges/detail/id/83.html 經過掃描可以找到index.php.bak備份文件&#xff0c;下載下來后打開發現是index.php的原代碼&#xff0c;如下圖所示。 由代碼可知我們要繞過md5加密&#xff0c;兩數如果滿足科學計數法的形式的話&a…

模型預測筆記(一):數據清洗及可視化、模型搭建、模型訓練和預測代碼一體化和對應結果展示(可作為baseline)

模型預測 一、導入關鍵包二、如何載入、分析和保存文件三、修改缺失值3.1 眾數3.2 平均值3.3 中位數3.4 0填充 四、修改異常值4.1 刪除4.2 替換 五、數據繪圖分析5.1 餅狀圖5.1.1 繪制某一特征的數值情況&#xff08;二分類&#xff09; 5.2 柱狀圖5.2.1 單特征與目標特征之間的…

OpenCV基本操作——算數操作

目錄 圖像的加法圖像的混合 圖像的加法 兩個圖像應該具有相同的大小和類型&#xff0c;或者第二個圖像可以是標量值 注意&#xff1a;OpenCV加法和Numpy加法之間存在差異。OpenCV的加法是飽和操作&#xff0c;而Numpy添加的是模運算 import numpy as np import cv2 as cv imp…

[數據集][目標檢測]鋼材表面缺陷目標檢測數據集VOC格式2279張10類別

數據集格式&#xff1a;Pascal VOC格式(不包含分割路徑的txt文件和yolo格式的txt文件&#xff0c;僅僅包含jpg圖片和對應的xml) 圖片數量(jpg文件個數)&#xff1a;2279 標注數量(xml文件個數)&#xff1a;2279 標注類別數&#xff1a;10 標注類別名稱:["yueyawan",&…

Qt 窗口隨鼠標移動效果

實現在窗口任意位置按下鼠標左鍵都可以移動窗口的效果&#xff0c;完整代碼如下&#xff1a; mainwindow.h&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class MainW…

PHP混淆加密以及常用的一些加密工具

PHP混淆加密是一種將源代碼轉換為難以理解和閱讀的方式&#xff0c;以保護代碼的安全性。以下是一些常見的PHP混淆加密方法&#xff1a; 代碼壓縮&#xff1a;使用代碼壓縮工具&#xff08;如UglifyJS&#xff09;將PHP代碼壓縮為一行&#xff0c;去除空格、換行符等可讀性的字…

jenkins 連接服務器,提示Can‘t connect to server

在Jenkins 添加服務器時&#xff0c;提示 Cant connect to server&#xff0c;如圖 搞了好久&#xff0c;不知道為什么不行~原來是行的&#xff0c;現在刪了 新建一個也不行。

2023牛客暑期多校訓練營8-C Clamped Sequence II

2023牛客暑期多校訓練營8-C Clamped Sequence II https://ac.nowcoder.com/acm/contest/57362/C 文章目錄 2023牛客暑期多校訓練營8-C Clamped Sequence II題意解題思路代碼 題意 解題思路 先考慮不加緊密度的情況&#xff0c;要支持單點修改&#xff0c;整體查詢&#xff0…