shibing624 / text2vec

text2vec, text to vector. 文本向量表征工具,把文本转化为向量矩阵,实现了Word2Vec、RankBM25、Sentence-BERT、CoSENT等文本表征、文本相似度计算模型,开箱即用。
https://pypi.org/project/text2vec/
Apache License 2.0
4.39k stars 392 forks source link

使用中发现单机8卡的训练速度比sentense-transformer的速度慢。 #114

Closed sangyongjia closed 1 year ago

sangyongjia commented 1 year ago

8卡使用text2vec中的 sentencebert模型,其训练速度比 单卡的sentense-transformer速度还慢(注:相同数量的训练数据)

不知道作者或其他使用者是否碰到过这个问题?

sangyongjia commented 1 year ago

执行命令: CUDA_VISIBLE_DEVICES=1,2,3,4,5,6,7 torchrun --nproc_per_node 7 training_sup_text_matching_model_mydata.py --num_epochs 1 --do_train --do_predict --output_dir outputs/STS-B-text2vec-macbert-v1 --batch_size 32 --data_parallel --model_arch "sentencebert" --train_file="/home/ma-user/work/data/embedding_model_eval_data_20230802/embedding_model_train_data_20230802_text2vec.jsonl" --valid_file="/home/ma-user/work/data/embedding_model_eval_data_20230802/embedding_model_eval_data_20230802_text2vec.jsonl" --model_name "/home/ma-user/work/text2vec/models/chinese-macbert-base"

shibing624 commented 1 year ago

没对比过,batch_size一样吗

sangyongjia commented 1 year ago

SentenceTransformer 使用的batch_size是64。 text2vec的batch_size是32【注,从默认值64改为32是因为报OOM,所以调小了batch_size】

sangyongjia commented 1 year ago

没对比过,batch_size一样吗

有对比过text2vec的单卡和多卡训练速度的区别吗?看sentence_transformer issues中,其作者尝试dataparallel以支持并行训练时,性能并没有收益。

shibing624 commented 1 year ago

多卡的并行处理是有收益的。