WuDiDaBinGe

Results 7 comments of WuDiDaBinGe

> 您可以根据自己所用的bs调一下试试 ![image](https://user-images.githubusercontent.com/37055010/180641328-438c9d68-165a-45e5-a3a5-8ceb327cb654.png) 文章中所有的 8(per_gpu)*64(gradient accumulation)*4(gpus) = 2048 那我128 * 2 * 6 的话应该调整成两倍吧(bs增大多少倍数 学习率相应增大)

> In general, this behavior is expected if you try to use many threads that evaluate different topics in parallel. > > The problem is that window-based coherence measures need...

Ok. In will increase "-Xmx" again. I use python-Palmetto,so i don't try Palmetto java library.Maybe i will try next time.Thanks.

> 这个模型的设计是无法识别type的。 我的任务里面关系只有属性这一种,但是subject和object的类型都有。Subject的类型比较单一,object的实体类型比较丰富,我在想能不能把object的类型当成关系类型。 或者说大佬有没有推荐的模型呢

> 嗯,您的理解是对的。不过不是把dataset分成N份,一般来说是load了同一个dataset,然后通过使用sampler来控制让不同的进程用不同的数据。 是的,应该是load了一样数据集并没有切分,取样时返回取样的index,进行index数组切片时,起始位置是进程号,隔N个取,所以每个进程的index列表就不同了。 ``` def __iter__(self): # deterministically shuffle based on epoch g = torch.Generator() g.manual_seed(self.epoch) if self.shuffle: indices = torch.randperm(len(self.dataset), generator=g).tolist() else: indices = list(range(len(self.dataset))) # add extra samples...

> 是的,会变成20G的。这里可以自己编程让每个进程只load自己需要的数据。 如果将数据集分成四份的话,在每个进程中加载对应的数据集。这样的话是不是直接用SequenceSampler采样而不用DistributedSampler采样了?

> 嗯,对的。不过fastNLP的DistTrainer之前没有考虑到这种设定,所以当时是默认会自动使用 > https://github.com/fastnlp/fastNLP/blob/b127963f213226dc796720193965d86dface07d5/fastNLP/core/dist_trainer.py#L175 > > > 分布式的sampler。这里有两个方案可以修改这个行为,第一个是自己复制DistTrainer修改一下这里的逻辑的。第二个方案是写一个Callback,类似于下面这样(大概是这样,可能需要调整一些细节) > ``` > class ChangeSamplerCallback(Callback): > def __init__(self): > super().__init__() > def on_train_start(): > self.trainer.data_iterator = DataSetIter(dataset=self.trainer.tr_data, batch_size=self.trainer.batch_size_per_gpu, sampler=None, > num_workers=self.trainer.num_data_workers, drop_last=self.trainer.drop_last)...