BertForQuestionAnswering的使用中遇到的一些函数

0. Bert

实在惭愧,我竟然不知道transforms改过两次名字(pytorch-transformerspytorch-pretrained-bert),我现在在用的还是老版本,现在的transformers相比于前两个版本的tokenizer有很大的改变,经师兄提醒要改一下了
BertForQuestionAnswering的使用中遇到的一些函数_第1张图片

1. logging的用法

配置:

import logging
logging.basicConfig(format = '%(asctime)s - %(levelname)s - %(name)s -   %(message)s',
                    datefmt = '%m/%d/%Y %H:%M:%S',
                    level = logging.INFO)
logger = logging.getLogger(__name__)

使用:

logger.warning("Could not find answer: '%s' vs. '%s'", actual_text, cleaned_answer_text)
logger.info("example_index: %s" % (example_index))

2. 多卡训练

说明使用的是那几个卡:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1, 2, 3'

得到GPU的个数:local_rank用于在GPU上进行分布式训练,目前我还没有尝试过分布式训练

if args.local_rank == -1 or args.no_cuda:
	device = torch.device("cuda" if torch.cuda.is_available() and not args.no_cuda else "cpu")
	n_gpu = torch.cuda.device_count()
else:
    torch.cuda.set_device(args.local_rank)
    device = torch.device("cuda", args.local_rank)
    n_gpu = 1
        # Initializes the distributed backend which will take care of sychronizing nodes/GPUs
    torch.distributed.init_process_group(backend='nccl')
logger.info("device: {} n_gpu: {}, distributed training: {}, 16-bits training: {}".format(
        device, n_gpu, bool(args.local_rank != -1), args.fp16))

接着,如果gpu个数>1,就需要把模型的数据并行:

random.seed(args.seed)
np.random.seed(args.seed)
torch.manual_seed(args.seed)
if n_gpu > 0:
	torch.cuda.manual_seed_all(args.seed)
    
# Prepare model
cache_dir = args.cache_dir if args.cache_dir else os.path.join(PYTORCH_PRETRAINED_BERT_CACHE, 'distributed_{}'.format(args.local_rank))
model = BertForQuestionAnswering.from_pretrained(args.bert_model, cache_dir=cache_dir)
model.to(device)
if n_gpu > 1:
	model = torch.nn.DataParallel(model)

3. SquadExample格式

self.qas_id # 问题的id
self.question_text # 问题
self.doc_tokens # 段落
self.orig_answer_text # 答案片段
self.start_position # 开始位置
self.end_position # 结束位置

关于对象打印:

    def __repr__(self):
        s = ""
        s += "qas_id: %s" % (self.qas_id)
        s += ", question_text: %s" % (
            self.question_text)
        s += ", doc_tokens: [%s]" % (" ".join(self.doc_tokens))
        if self.start_position:
            s += ", start_position: %d" % (self.start_position)
        if self.start_position:
            s += ", end_position: %d" % (self.end_position)
        return s

4. InputFeatures格式

        self.unique_id 
        self.example_index 
        self.doc_span_index # doc中的第几个paragraphs
        self.tokens #[CLS]question[SEP]fake answer对应的paragraph[SEP]
        self.token_to_orig_map 
        self.token_is_max_context 
        self.input_ids 
        self.input_mask 
        self.segment_ids 
        self.start_position 
        self.end_position 

我觉得还是来个例子直观些:

*** Example ***
unique_id: 1000000008
example_index: 5
doc_span_index: 0
tokens: [CLS] 微 信 登 录 环 境 异 常 被 限 制 登 录 怎 么 办 [SEP] 关 于 微 信 解 封 及 解 封 后 又 被 系 统 追 封 的 问 题 : 1 : 将 手 机 上 的 客 户 端 删 除 , 随 后 重 新 下 载 官 方 最 新 版 本 微 信 2 : 登 录 微 信 , 依 次 按 照 提 示 对 微 信 账 号 进 行 解 封 3 : 账 号 解 封 成 功 登 陆 后 , 请 勿 添 加 好 友 及 修 改 微 信 资 料 等 操 作 4 : 尽 可 能 将 微 信 在 手 机 上 挂 2 - 3 天 后 , 在 进 行 其 它 操 作 备 注 : 由 于 微 信 官 方 的 限 制 , 导 致 许 多 账 号 需 解 封 2 次 才 能 成 功 关 于 手 机 注 册 微 信 及 解 封 微 信 的 次 数 的 问 题 : 1 : 每 个 手 机 号 码 , 一 个 月 的 周 期 内 , 可 以 解 封 一 次 微 信 2 : 每 个 手 机 号 码 , 一 年 时 间 内 可 以 成 功 注 册 三 个 微 信 号 3 : 注 册 微 信 账 号 的 时 间 周 期 为 : 一 个 月 , 三 个 月 , 一 年 关 于 微 信 永 久 封 号 后 那 绑 上 面 的 q q 号 码 的 问 题 : 1 : 出 现 这 情 况 , 微 信 账 号 也 许 就 废 了 , 但 q q 号 还 有 回 旋 的 余 地 2 : 微 信 永 久 封 号 只 会 争 对 微 信 账 号 , 不 会 对 q q 账 号 进 行 永 久 封 号 3 : 微 信 与 q q 之 间 存 在 的 种 合 作 关 系 , 它 只 有 权 利 。 按 操 作 需 要 发 送 短 信 , 收 到 短 信 [SEP]
token_to_orig_map: 18:0 19:1 20:2 21:3 22:4 23:5 24:6 25:7 26:8 27:9 28:10 29:11 30:12 31:13 32:14 33:15 34:16 35:17 36:18 37:19 38:20 39:21 40:22 41:23 42:24 43:25 44:26 45:27 46:28 47:29 48:30 49:31 50:32 51:33 52:34 53:35 54:36 55:37 56:38 57:39 58:40 59:41 60:42 61:43 62:44 63:45 64:46 65:47 66:48 67:49 68:50 69:51 70:52 71:53 72:54 73:55 74:56 75:57 76:58 77:59 78:60 79:61 80:62 81:63 82:64 83:65 84:66 85:67 86:68 87:69 88:70 89:71 90:72 91:73 92:74 93:75 94:76 95:77 96:78 97:79 98:80 99:81 100:82 101:83 102:84 103:85 104:86 105:87 106:88 107:89 108:90 109:91 110:92 111:93 112:94 113:95 114:96 115:97 116:98 117:99 118:100 119:101 120:102 121:103 122:104 123:105 124:106 125:107 126:108 127:109 128:110 129:111 130:112 131:113 132:114 133:115 134:116 135:117 136:118 137:119 138:120 139:121 140:122 141:123 142:124 143:125 144:126 145:127 146:128 147:129 148:130 149:131 150:132 151:133 152:134 153:135 154:136 155:137 156:138 157:139 158:140 159:141 160:142 161:143 162:144 163:145 164:146 165:147 166:148 167:149 168:150 169:151 170:152 171:153 172:154 173:155 174:156 175:157 176:158 177:159 178:160 179:161 180:162 181:163 182:164 183:165 184:166 185:167 186:168 187:169 188:170 189:171 190:172 191:173 192:174 193:175 194:176 195:177 196:178 197:179 198:180 199:181 200:182 201:183 202:184 203:185 204:186 205:187 206:188 207:189 208:190 209:191 210:192 211:193 212:194 213:195 214:196 215:197 216:198 217:199 218:200 219:201 220:202 221:203 222:204 223:205 224:206 225:207 226:208 227:209 228:210 229:211 230:212 231:213 232:214 233:215 234:216 235:217 236:218 237:219 238:220 239:221 240:222 241:223 242:224 243:225 244:226 245:227 246:228 247:229 248:230 249:231 250:232 251:233 252:234 253:235 254:236 255:237 256:238 257:239 258:240 259:241 260:242 261:243 262:244 263:245 264:246 265:247 266:248 267:249 268:250 269:251 270:252 271:253 272:254 273:255 274:256 275:257 276:258 277:259 278:260 279:261 280:262 281:263 282:264 283:265 284:266 285:267 286:268 287:269 288:270 289:271 290:272 291:273 292:274 293:275 294:276 295:277 296:278 297:279 298:280 299:281 300:282 301:283 302:284 303:285 304:286 305:287 306:288 307:289 308:290 309:291 310:292 311:293 312:294 313:295 314:296 315:297 316:298 317:299 318:300 319:301 320:302 321:303 322:304 323:305 324:306 325:307 326:308 327:309 328:310 329:311 330:312 331:313 332:314 333:315 334:316 335:317 336:318 337:319 338:320 339:321 340:322 341:323 342:324 343:325 344:326 345:327 346:328 347:329 348:330 349:331 350:332 351:333 352:334 353:335 354:336 355:337 356:338 357:339 358:340 359:341 360:342 361:343 362:344 363:345 364:346 365:347 366:348 367:349 368:350 369:351 370:352 371:353 372:354 373:355 374:356 375:357 376:358 377:359 378:360 379:361 380:362 381:363 382:364
token_is_max_context: 18:True 19:True 20:True 21:True 22:True 23:True 24:True 25:True 26:True 27:True 28:True 29:True 30:True 31:True 32:True 33:True 34:True 35:True 36:True 37:True 38:True 39:True 40:True 41:True 42:True 43:True 44:True 45:True 46:True 47:True 48:True 49:True 50:True 51:True 52:True 53:True 54:True 55:True 56:True 57:True 58:True 59:True 60:True 61:True 62:True 63:True 64:True 65:True 66:True 67:True 68:True 69:True 70:True 71:True 72:True 73:True 74:True 75:True 76:True 77:True 78:True 79:True 80:True 81:True 82:True 83:True 84:True 85:True 86:True 87:True 88:True 89:True 90:True 91:True 92:True 93:True 94:True 95:True 96:True 97:True 98:True 99:True 100:True 101:True 102:True 103:True 104:True 105:True 106:True 107:True 108:True 109:True 110:True 111:True 112:True 113:True 114:True 115:True 116:True 117:True 118:True 119:True 120:True 121:True 122:True 123:True 124:True 125:True 126:True 127:True 128:True 129:True 130:True 131:True 132:True 133:True 134:True 135:True 136:True 137:True 138:True 139:True 140:True 141:True 142:True 143:True 144:True 145:True 146:True 147:True 148:True 149:True 150:True 151:True 152:True 153:True 154:True 155:True 156:True 157:True 158:True 159:True 160:True 161:True 162:True 163:True 164:True 165:True 166:True 167:True 168:True 169:True 170:True 171:True 172:True 173:True 174:True 175:True 176:True 177:True 178:True 179:True 180:True 181:True 182:True 183:True 184:True 185:True 186:True 187:True 188:True 189:True 190:True 191:True 192:True 193:True 194:True 195:True 196:True 197:True 198:True 199:True 200:True 201:True 202:True 203:True 204:True 205:True 206:True 207:True 208:True 209:True 210:True 211:True 212:True 213:True 214:True 215:True 216:True 217:True 218:True 219:True 220:True 221:True 222:True 223:True 224:True 225:True 226:True 227:True 228:True 229:True 230:True 231:True 232:True 233:True 234:True 235:True 236:True 237:True 238:True 239:True 240:True 241:True 242:True 243:True 244:True 245:True 246:True 247:True 248:True 249:True 250:True 251:True 252:True 253:True 254:True 255:True 256:True 257:True 258:True 259:True 260:True 261:True 262:True 263:True 264:True 265:False 266:False 267:False 268:False 269:False 270:False 271:False 272:False 273:False 274:False 275:False 276:False 277:False 278:False 279:False 280:False 281:False 282:False 283:False 284:False 285:False 286:False 287:False 288:False 289:False 290:False 291:False 292:False 293:False 294:False 295:False 296:False 297:False 298:False 299:False 300:False 301:False 302:False 303:False 304:False 305:False 306:False 307:False 308:False 309:False 310:False 311:False 312:False 313:False 314:False 315:False 316:False 317:False 318:False 319:False 320:False 321:False 322:False 323:False 324:False 325:False 326:False 327:False 328:False 329:False 330:False 331:False 332:False 333:False 334:False 335:False 336:False 337:False 338:False 339:False 340:False 341:False 342:False 343:False 344:False 345:False 346:False 347:False 348:False 349:False 350:False 351:False 352:False 353:False 354:False 355:False 356:False 357:False 358:False 359:False 360:False 361:False 362:False 363:False 364:False 365:False 366:False 367:False 368:False 369:False 370:False 371:False 372:False 373:False 374:False 375:False 376:False 377:False 378:False 379:False 380:False 381:False 382:False
input_ids: 101 2544 928 4633 2497 4384 1862 2460 2382 6158 7361 1169 4633 2497 2582 720 1215 102 1068 754 2544 928 6237 2196 1350 6237 2196 1400 1348 6158 5143 5320 6841 2196 4638 7309 7579 131 122 131 2199 2797 3322 677 4638 2145 2787 4999 1160 7370 117 7390 1400 7028 3173 678 6770 2135 3175 3297 3173 4276 3315 2544 928 123 131 4633 2497 2544 928 117 898 3613 2902 4212 2990 4850 2190 2544 928 6572 1384 6822 6121 6237 2196 124 131 6572 1384 6237 2196 2768 1216 4633 7355 1400 117 6435 1257 3924 1217 1962 1351 1350 934 3121 2544 928 6598 3160 5023 3082 868 125 131 2226 1377 5543 2199 2544 928 1762 2797 3322 677 2899 123 118 124 1921 1400 117 1762 6822 6121 1071 2124 3082 868 1906 3800 131 4507 754 2544 928 2135 3175 4638 7361 1169 117 2193 5636 6387 1914 6572 1384 7444 6237 2196 123 3613 2798 5543 2768 1216 1068 754 2797 3322 3800 1085 2544 928 1350 6237 2196 2544 928 4638 3613 3144 4638 7309 7579 131 122 131 3680 702 2797 3322 1384 4772 117 671 702 3299 4638 1453 3309 1079 117 1377 809 6237 2196 671 3613 2544 928 123 131 3680 702 2797 3322 1384 4772 117 671 2399 3198 7313 1079 1377 809 2768 1216 3800 1085 676 702 2544 928 1384 124 131 3800 1085 2544 928 6572 1384 4638 3198 7313 1453 3309 711 131 671 702 3299 117 676 702 3299 117 671 2399 1068 754 2544 928 3719 719 2196 1384 1400 6929 5308 677 7481 4638 159 159 1384 4772 4638 7309 7579 131 122 131 1139 4385 6821 2658 1105 117 2544 928 6572 1384 738 6387 2218 2426 749 117 852 159 159 1384 6820 3300 1726 3181 4638 865 1765 123 131 2544 928 3719 719 2196 1384 1372 833 751 2190 2544 928 6572 1384 117 679 833 2190 159 159 6572 1384 6822 6121 3719 719 2196 1384 124 131 2544 928 680 159 159 722 7313 2100 1762 4638 4905 1394 868 1068 5143 117 2124 1372 3300 3326 1164 511 2902 3082 868 7444 6206 1355 6843 4764 928 117 3119 1168 4764 928 102
input_mask: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
segment_ids: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
start_position: 38
end_position: 140
answer: 1 : 将 手 机 上 的 客 户 端 删 除 , 随 后 重 新 下 载 官 方 最 新 版 本 微 信 2 : 登 录 微 信 , 依 次 按 照 提 示 对 微 信 账 号 进 行 解 封 3 : 账 号 解 封 成 功 登 陆 后 , 请 勿 添 加 好 友 及 修 改 微 信 资 料 等 操 作 4 : 尽 可 能 将 微 信 在 手 机 上 挂 2 - 3 天 后 , 在 进 行 其 它 操 作

5. paragraph_extraction

对于每个文档,选择包含尽可能多信息的段落
预定义的最大段落长度为510
related paragraph:topN=5

  • local_rank分布式训练
  • 使用apex进行半精度训练
  • doc_tokens我没弄清楚是怎么处理的
  • orig example和split example的区别
  • 占位符UNK、CLS、SEP怎么处理的
  • 怎么评价的,比如"question_type": "ENTITY"这种

你可能感兴趣的:(BERT)