Dinghao Zhou

Results 114 comments of Dinghao Zhou

现在是dict是inplace操作 在原有dict上新增或者update, 年后等w2vbert参数移植过来 会完善和简化rnnt

星辰提到的3, 可以加个多任务, 下边举个例子 以下是来自chatgpt的回答 ```chatgpt 在多任务训练中,批次(batch)的组织和损失函数的定义需要考虑多个任务之间的关系和权衡。下面是一些常见的方法: 批次组织:在组织批次时,可以采取以下策略: 同时从每个任务的数据集中抽取一定数量的样本,形成一个批次。这种方法适用于任务之间的数据量相近或需要平衡处理。 为每个任务设置不同的批次大小,根据任务的重要性或数据分布进行调整。较重要的任务可以分配更大的批次大小,以便更充分地更新模型参数。 根据硬件资源和内存限制,将批次大小限制在可接受的范围内。 ...... ``` 这个例子中,我们需要很方便初始化dataset1 dataset2 dataset3. ``` python dataset = interleave(dataset1, dataset2, dataset3) ``` 我们需要这要的功能,并且不止是多任务, 对于语音任务 在一个batch上我们也需要组合不同领域的数据进行tune

另外,补充下 , 现在recognize.py 依赖的dataset 需要有label, 重构的dataset需要考虑单纯的infer 比如: ```python dataset(split='train') # speech and label dataset(split='cv') # speech and label ``` ```python dataset(split='infer') # only speech ``` 对于和大模型的结合: ```python textdataset # only...

## 当前瓶颈 在于: 1 同步的取数据 (及时有prefetch) 2 可以有并行的地方, 比如已经下载到内存的shard/wavs 可以parallel decode fbank等(现在极度依赖num_worker, num_worker 过大会有bus error问题 (**并且num worker并行多的话 tar多了 , 我们也需要的是非tar级的并发**), 如果并行起来 就可能是num_worker * parallel_num), ## 方案一:集成huggingface datasets: 1 优点: -...

> ![image](https://private-user-images.githubusercontent.com/13466943/286236738-b1f3fd7c-3203-4958-99e9-82cb1bbdbe69.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MDExNzMzNzIsIm5iZiI6MTcwMTE3MzA3MiwicGF0aCI6Ii8xMzQ2Njk0My8yODYyMzY3MzgtYjFmM2ZkN2MtMzIwMy00OTU4LTk5ZTktODJjYjFiYmRiZTY5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFJV05KWUFYNENTVkVINTNBJTJGMjAyMzExMjglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjMxMTI4VDEyMDQzMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBhNmIxZDU4YmM4Njk5OTAyNGM2YTVkYTk0ODA4MTMzYWRjNGVkNDFiMWQwOWZmNTFmZjVhOTU5NjVjZjE0MDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FU6iTqNJuOyRAx7JZftziRZZ8vsw9Pv8b-rgYsC-_nA) > > 方案二能快速支持arrow格式的数据吗 应该可以的, hg也是用的arrow的py包 ref: https://arrow.apache.org/docs/python/

新IO需要考虑determinism(data 层面保证可复现) shuffle 需要设置seed

测试multiprocess 和multithread: 100条音频, 每条9s , ‘并发“计算fbank - 单条计算0.02, - 100条顺序算为2左右, - 多线程(nthread=100)也为2左右, (cpu bound 变成串行 gil) - 多进程(nproc=100)为0.1

关于代码复用性, 下边是代码片段 ```python # 这里我们可以继承IterableDataset class Dataset(): def __init__(self, dataset, func=None, *args, **kwargs): self._dataset = dataset self.args = args self.kwargs = kwargs self.func = func @staticmethod def from_source(source): return Dataset(source)...

modified code: ```python class Dataset: def __init__(self, source, f=lambda elem: elem, *args, **kw): assert callable(f) self._dataset = source self.f = f self.args = args self.kw = kw def set_epoch(self, epoch):...

lthoste 和wenet现在的本质上没有区别, - 要加速cpu bound 的transform 多个item, multithread 不行 需要multipricessing, (比如一个tar已经在mem里了, 现在的并发度在shard级别不在shard内部) 这时候可以多进程提多个wav特征) 二者皆有这个问题 - 要wrapper 适配各种任务, 在现有的wenet上简单抽象下就行