示例#1
0
文件: train.py 项目: jeou/MXNetSeg
def record_hyper_params(hyper_dict: dict):
    for k, v in hyper_dict.items():
        if k not in ('model_dir', 'record_dir', 'data_path'):
            v = v if v is not None else '-'
            fitlog.add_hyper(value=str(v), name=str(k))
    if 'dilate' not in hyper_dict.keys():
        fitlog.add_hyper(value='-', name='dilate')
    fitlog.add_other(value=platform.system(), name='platform')
示例#2
0
 def on_exception(self, exception):
     fitlog.finish(status=1)
     if self._log_exception:
         fitlog.add_other(repr(exception), name='except_info')
示例#3
0
if 'p' in os.environ:
    os.environ['CUDA_VISIBLE_DEVICES']=os.environ['p']

import torch
from torch import optim
from fastNLP import Trainer, CrossEntropyLoss
from fastNLP import BucketSampler, cache_results, WarmupCallback, GradientClipCallback, FitlogCallback
from mono.data.pipe import ENBertPipe
from mono.model.bert import ENBertReverseDict
import fitlog
from mono.model.metrics import MonoMetric
from joint.data.utils import clip_max_length
# fitlog.debug()
fitlog.set_log_dir('en_logs')
fitlog.add_hyper_in_file(__file__)
fitlog.add_other('uncased', name='note')

paths = '../data/en'
#######hyper
model_name = 'bert'
max_word_len = 5
lr = 2e-5
batch_size = 64
n_epochs = 10
#######hyper
pre_name = 'bert-base-uncased'
# 在transformers中的名字叫做bert-base-cased


@cache_results('caches/en_{}_{}.pkl'.format(pre_name.split('/')[-1], max_word_len), _refresh=False)
def get_data():
示例#4
0
文件: fitter.py 项目: jeou/MXNetSeg
    def fit(self):
        last_miou = .0  # record the best validation mIoU
        loss_step = 0  # step count
        for epoch in range(self.conf.epochs):
            train_loss = .0
            start = time.time()
            for i, (data, target) in enumerate(self.train_iter):
                gpu_datas = split_and_load(data, ctx_list=self.ctx)
                gpu_targets = split_and_load(target, ctx_list=self.ctx)
                with autograd.record():
                    loss_gpu = [
                        self.criterion(*self.net(gpu_data), gpu_target)
                        for gpu_data, gpu_target in zip(
                            gpu_datas, gpu_targets)
                    ]
                for loss in loss_gpu:
                    autograd.backward(loss)
                self.trainer.step(self.conf.bs_train)
                nd.waitall()
                loss_temp = .0
                for losses in loss_gpu:
                    loss_temp += losses.sum().asscalar()
                train_loss += (loss_temp / self.conf.bs_train)
                # log every n batch
                # add loss to draw curve, train_loss <class numpy.float64>
                interval = 5 if loss_step < 5000 else 50
                if (i % interval == 0) or (i + 1 == len(self.train_iter)):
                    fitlog.add_loss(name='loss',
                                    value=round(train_loss / (i + 1), 5),
                                    step=loss_step)
                    loss_step += 1
                    self.logger.info(
                        "Epoch %d, batch %d, training loss %.5f." %
                        (epoch, i, train_loss / (i + 1)))
            # log each epoch
            self.logger.info(
                ">>>>>> Epoch %d complete, time cost: %.1f sec. <<<<<<" %
                (epoch, time.time() - start))
            # validation each epoch
            if self.val:
                pixel_acc, mean_iou = self._validation()
                self.logger.info(
                    "Epoch %d validation, PixelAccuracy: %.4f, mIoU: %.4f." %
                    (epoch, pixel_acc, mean_iou))
                fitlog.add_metric(value=mean_iou, step=epoch, name='mIoU')
                fitlog.add_metric(value=pixel_acc, step=epoch, name='PA')
                if mean_iou > last_miou:
                    f_name = self._save_model(tag='best')
                    self.logger.info(
                        "Epoch %d mIoU: %.4f > %.4f(previous), save model: %s"
                        % (epoch, mean_iou, last_miou, f_name))
                    last_miou = mean_iou

        # save the final-epoch params
        f_name = self._save_model(tag='last')
        self.logger.info(">>>>>> Training complete, save model: %s. <<<<<<" %
                         f_name)
        # record
        fitlog.add_best_metric(value=round(last_miou, 4), name='mIoU')
        fitlog.add_other(value=self.id, name='record_id')
        fitlog.add_other(value=self.num_train, name='train')
        fitlog.add_other(value=self.num_val, name='val')
def log_config(config, task_name):
    fitlog.add_other(task_name, name="model_name")
    # irrelavant
    fitlog.add_other(config.class_num, name="class_num")
    fitlog.add_other(str(config.kernel_sizes), name="kernel_sizes")
    fitlog.add_other(config.kernel_num, name="kernel_num")
    fitlog.add_other(config.in_channels, name="in_channels")
    fitlog.add_other(config.dropout, name="dropout")
    fitlog.add_other(config.static, name="static")
    # irrelavant above
    fitlog.add_other(config.sentence_length, name="sentence_length")
    fitlog.add_other(config.num_layers, name="num_layers")  # irrelavant
    fitlog.add_other(config.hidden_dim, name="hidden_dim")  # irrelavant
    fitlog.add_other(config.lr, name="lr")
    fitlog.add_other(config.weight_decay, name="weight_decay")  # irrelavant
    fitlog.add_other(config.patience, name="patience")
    fitlog.add_other(config.epoch, name="epoch")
    fitlog.add_other(config.batch_size, name="batch_size")
    fitlog.add_other(str(config.device), name="device")
    fitlog.add_other(config.warmup_proportion, name="warmup_proportion")
    fitlog.add_other(config.local_rank, name="local_rank")
    fitlog.add_other(config.update_every, name="update_every")
示例#6
0
from fastNLP import BucketSampler, cache_results, WarmupCallback, GradientClipCallback
from mix.data.pipe import MixUnalignBertPipe
from mix.data.loader import MixUnAlignLoader
# from V1.model.bert import ENBertReverseDict
from mix.model.bert import JointBertReverseDict
from fastNLP import DataSet, Tester
import fitlog
from mix.model.loss import MixLoss
from joint.model.metrics import JointMetric, SummaryMetric
from joint.data.utils import clip_max_length
from mix.model.metrics import SaveMetric
from joint.model.callback import FitlogCallback
# fitlog.debug()
fitlog.set_log_dir('logs')
fitlog.add_hyper_in_file(__file__)
fitlog.add_other('no lg loss', name='note')

paths = '../data/mix'
#######hyper
model_name = 'bert'
max_word_len = 5
lr = 5e-5
lg_lambda = 0.0
batch_size = 80
n_epochs = 20
#######hyper

pre_name = 'bert-base-multilingual-cased'
# transformers中bert-base-multilingual-cased

示例#7
0
]
callbacks.append(FitlogCallback(data=data, verbose=1))
train_data = data_bundle.get_dataset('train')
train_data.add_seq_len('input')
sampler = BucketSampler()

clip_max_length(train_data, data_bundle)

trainer = Trainer(train_data=train_data,
                  model=model,
                  optimizer=optimizer,
                  loss=CrossEntropyLoss(),
                  batch_size=batch_size,
                  sampler=sampler,
                  drop_last=False,
                  update_every=1,
                  num_workers=1,
                  n_epochs=n_epochs,
                  print_every=5,
                  dev_data=data_bundle.get_dataset('dev'),
                  metrics=MonoMetric(),
                  metric_key='t1',
                  validate_every=-1,
                  save_path='save_models/',
                  use_tqdm=True,
                  device=None,
                  callbacks=callbacks,
                  check_code_level=0)
trainer.train(load_best_model=False)
fitlog.add_other(trainer.start_time, name='start_time')
def log_config(config, task_name):
    fitlog.add_other(task_name, name="model_name")
    fitlog.add_other(str(config.device), name="device")
    fitlog.add_other(config.char_embed_dim, name="char_embed_dim")
    fitlog.add_other(config.word_embed_dim, name="word_embed_dim")
    fitlog.add_other(config.pos_embed_dim, name="pos_embed_dim")
    fitlog.add_other(config.sentence_length, name="sentence_length")
    fitlog.add_other(config.hidden_dim, name="hidden_dim")
    fitlog.add_other(config.dropout, name="dropout")
    fitlog.add_other(config.encoding_type, name="encoding_type")
    fitlog.add_other(config.epoch, name="epoch")
    fitlog.add_other(config.batch_size, name="batch_size")
    fitlog.add_other(config.lr, name="lr")
    fitlog.add_other(config.weight_decay, name="weight_decay")
    fitlog.add_other(config.patience, name="patience")

    fitlog.add_other(config.num_layers, name="num_layers")
    fitlog.add_other(config.inner_size, name="inner_size")
    fitlog.add_other(config.key_size, name="key_size")
    fitlog.add_other(config.value_size, name="value_size")
    fitlog.add_other(config.num_head, name="num_head")
示例#9
0
    metrics=[AccuracyMetric(),
             ClassifyFPreRecMetric(f_type="macro")],
    metric_key=None,
    validate_every=-1,
    save_path=None,
    use_tqdm=False,
    device=0,
    callbacks=callbacks,
    check_code_level=0,
    test_sampler=SortedSampler(),
    test_use_tqdm=False,
)

trainer.train(load_best_model=False)

fitlog.add_other(trainer.start_time, name="start_time")
os.makedirs("./save_models", exist_ok=True)
folder = "./save_models/{}-{}-{}".format(model_type, args.dataset, "FT")
count = 0
for fn in os.listdir("save_models"):
    if fn.startswith(folder.split("/")[-1]):
        count += 1
folder = folder + str(count)
fitlog.add_other(count, name="count")
if args.save_embed and not os.path.exists(folder):
    if not isinstance(embed, XLMRobertaModel):
        embed.save(folder)
    else:
        os.makedirs(folder, exist_ok=True)
        os.makedirs("{}/{}".format(folder, model_type), exist_ok=True)
        embed.save_pretrained("{}/{}".format(folder, model_type))
示例#10
0
import torch
from torch import optim
from fastNLP import Trainer, CrossEntropyLoss
from fastNLP import BucketSampler, cache_results, WarmupCallback, GradientClipCallback
from joint.data.pipe import BiAlignedBertPipe
from joint.data.loader import BiAlignLoader
# from V1.model.bert import ENBertReverseDict
from joint.model.bert import BiBertReverseDict
import fitlog
from joint.model.metrics import BiMetric
from joint.model.callback import FitlogCallback
from joint.data.utils import clip_max_length
# fitlog.debug()
fitlog.set_log_dir('logs')
fitlog.add_hyper_in_file(__file__)
fitlog.add_other(name='note', value='use embedding')

paths = '../data/mix'

#######hyper
pair = 'es_en'
model_name = 'bert'
max_word_len = 5
lr = 1e-4
batch_size = 80
n_epochs = 20
#######hyper
pre_name = 'bert-base-multilingual-cased'
# transformers中bert-base-multilingual-cased

示例#11
0
def log_config(config, task_name):
    fitlog.add_other(task_name, name="model_name")
    fitlog.add_other(config.class_num, name="class_num")
    fitlog.add_other(str(config.kernel_sizes), name="kernel_sizes")
    fitlog.add_other(config.kernel_num, name="kernel_num")
    fitlog.add_other(config.in_channels, name="in_channels")
    fitlog.add_other(config.dropout, name="dropout")
    fitlog.add_other(config.static, name="static")
    fitlog.add_other(config.sentence_length, name="sentence_length")
    fitlog.add_other(config.num_layers, name="num_layers")
    fitlog.add_other(config.hidden_dim, name="hidden_dim")
    fitlog.add_other(config.lr, name="lr")
    fitlog.add_other(config.weight_decay, name="weight_decay")
    fitlog.add_other(config.patience, name="patience")
    fitlog.add_other(config.epoch, name="epoch")
    fitlog.add_other(config.batch_size, name="batch_size")
    fitlog.add_other(str(config.device), name="device")
示例#12
0
from torch import optim
from fastNLP import Trainer
from fastNLP import BucketSampler, cache_results, WarmupCallback, GradientClipCallback
from joint.data.pipe import JointAlignBertPipe
from joint.data.loader import JointAlignLoader
from joint.model.bert import JointBertReverseDict
import fitlog
from joint.model.metrics import JointMetric, SummaryMetric
from fastNLP import DataSet, Tester
from joint.model.callback import FitlogCallback
from mix.model.loss import MixLoss
from joint.data.utils import clip_max_length
# fitlog.debug()
fitlog.set_log_dir('logs')
fitlog.add_hyper_in_file(__file__)
fitlog.add_other(name='note', value='lm head')

paths = '../data/mix'
#######hyper
model_name = 'bert'
max_word_len = 5
batch_size = 80
n_epochs = 20
lg_lambda = 0.0
lr = 5e-5
#######hyper
pre_name = 'bert-base-multilingual-cased'
# transformers中xlm-roberta-base


@cache_results('caches/joint_{}_{}.pkl'.format(