Spaces:
Sleeping
Sleeping
terapyon
commited on
Commit
·
e88a707
1
Parent(s):
3227cde
modify inference for model file
Browse files- inference.py +18 -15
inference.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
import copy
|
| 2 |
import re
|
| 3 |
from pathlib import Path
|
| 4 |
from typing import Generator
|
|
@@ -10,6 +9,7 @@ import tomotopy as tp # type: ignore
|
|
| 10 |
import torch
|
| 11 |
import torch.nn as nn
|
| 12 |
import transformers as T # type: ignore
|
|
|
|
| 13 |
from scipy import stats # type: ignore
|
| 14 |
from sudachipy import dictionary, tokenizer # type: ignore
|
| 15 |
|
|
@@ -29,7 +29,7 @@ else:
|
|
| 29 |
gpu = -1 # gpu = -1 # GPUが使用できなければ(CPUで処理)-1を指定
|
| 30 |
|
| 31 |
|
| 32 |
-
cls_num = 3
|
| 33 |
max_length = 512
|
| 34 |
k_folds = 10
|
| 35 |
bert_model_name = "cl-tohoku/bert-base-japanese-v3"
|
|
@@ -37,11 +37,10 @@ device = torch.device(f"cuda:{gpu}" if gpu>=0 else "cpu")
|
|
| 37 |
|
| 38 |
|
| 39 |
#BERTモデルの定義
|
| 40 |
-
class BertClassifier(nn.Module):
|
| 41 |
-
def __init__(self,
|
| 42 |
-
super(
|
| 43 |
-
|
| 44 |
-
self.bert = T.BertModel.from_pretrained(model_name, output_attentions=True)
|
| 45 |
self.fc = nn.Linear(768, cls_num, bias=True)
|
| 46 |
|
| 47 |
nn.init.normal_(self.fc.weight, std=0.02)
|
|
@@ -115,27 +114,31 @@ class SudachiTokenizer:
|
|
| 115 |
return token_list
|
| 116 |
|
| 117 |
|
| 118 |
-
def make_traind_model(
|
| 119 |
trained_models = []
|
| 120 |
for k in range(k_folds):
|
| 121 |
k = k + 1
|
| 122 |
-
model_path = model_base_path / f"trained_model{k}.pt"
|
| 123 |
-
trained_model = copy.deepcopy(bert_model)
|
| 124 |
-
trained_model.load_state_dict(torch.load(model_path, map_location=device), strict=False)
|
|
|
|
|
|
|
|
|
|
| 125 |
trained_models.append(trained_model)
|
| 126 |
return trained_models
|
| 127 |
|
| 128 |
|
| 129 |
@st.cache_resource
|
| 130 |
def init_models():
|
| 131 |
-
bert_model = BertClassifier(
|
| 132 |
-
bert_model.eval()
|
| 133 |
-
bert_model.to(device)
|
| 134 |
|
| 135 |
tokenizer_sudachi = SudachiTokenizer(split_mode="C")
|
| 136 |
#Tokenizerの設定(ここではtokenizerをtokenizer_c2にしている)
|
| 137 |
tokenizer_c2 = T.BertJapaneseTokenizer.from_pretrained(bert_model_name)
|
| 138 |
-
trained_models = make_traind_model(bert_model)
|
|
|
|
| 139 |
return tokenizer_sudachi, tokenizer_c2, trained_models
|
| 140 |
|
| 141 |
|
|
|
|
|
|
|
| 1 |
import re
|
| 2 |
from pathlib import Path
|
| 3 |
from typing import Generator
|
|
|
|
| 9 |
import torch
|
| 10 |
import torch.nn as nn
|
| 11 |
import transformers as T # type: ignore
|
| 12 |
+
from huggingface_hub import PyTorchModelHubMixin # type: ignore
|
| 13 |
from scipy import stats # type: ignore
|
| 14 |
from sudachipy import dictionary, tokenizer # type: ignore
|
| 15 |
|
|
|
|
| 29 |
gpu = -1 # gpu = -1 # GPUが使用できなければ(CPUで処理)-1を指定
|
| 30 |
|
| 31 |
|
| 32 |
+
# cls_num = 3
|
| 33 |
max_length = 512
|
| 34 |
k_folds = 10
|
| 35 |
bert_model_name = "cl-tohoku/bert-base-japanese-v3"
|
|
|
|
| 37 |
|
| 38 |
|
| 39 |
#BERTモデルの定義
|
| 40 |
+
class BertClassifier(nn.Module, PyTorchModelHubMixin):
|
| 41 |
+
def __init__(self, cls_num: int):
|
| 42 |
+
super().__init__()
|
| 43 |
+
self.bert = T.BertModel.from_pretrained(bert_model_name, output_attentions=True)
|
|
|
|
| 44 |
self.fc = nn.Linear(768, cls_num, bias=True)
|
| 45 |
|
| 46 |
nn.init.normal_(self.fc.weight, std=0.02)
|
|
|
|
| 114 |
return token_list
|
| 115 |
|
| 116 |
|
| 117 |
+
def make_traind_model():
|
| 118 |
trained_models = []
|
| 119 |
for k in range(k_folds):
|
| 120 |
k = k + 1
|
| 121 |
+
# model_path = model_base_path / f"trained_model{k}.pt"
|
| 122 |
+
# trained_model = copy.deepcopy(bert_model)
|
| 123 |
+
# trained_model.load_state_dict(torch.load(model_path, map_location=device), strict=False)
|
| 124 |
+
# trained_models.append(trained_model)
|
| 125 |
+
model_name = MODEL_BASE + str(k)
|
| 126 |
+
trained_model = BertClassifier.from_pretrained(model_name).to(device)
|
| 127 |
trained_models.append(trained_model)
|
| 128 |
return trained_models
|
| 129 |
|
| 130 |
|
| 131 |
@st.cache_resource
|
| 132 |
def init_models():
|
| 133 |
+
# bert_model = BertClassifier(cls_num=1) #出力ノードを1に設定
|
| 134 |
+
# bert_model.eval()
|
| 135 |
+
# bert_model.to(device)
|
| 136 |
|
| 137 |
tokenizer_sudachi = SudachiTokenizer(split_mode="C")
|
| 138 |
#Tokenizerの設定(ここではtokenizerをtokenizer_c2にしている)
|
| 139 |
tokenizer_c2 = T.BertJapaneseTokenizer.from_pretrained(bert_model_name)
|
| 140 |
+
# trained_models = make_traind_model(bert_model)
|
| 141 |
+
trained_models = make_traind_model()
|
| 142 |
return tokenizer_sudachi, tokenizer_c2, trained_models
|
| 143 |
|
| 144 |
|