Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup
Paper • 2101.06983 • Published • 3
How to use hle50/bkai-checkpoint-2100 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("hle50/bkai-checkpoint-2100")
sentences = [
"Công_ty không trả lương cho người lao_động trong thời_gian học nghề thì sẽ bị xử_phạt như thế_nào theo quy_định hiện_nay ?",
"\" Điều 14 . Vi_phạm_quy_định về đào_tạo , bồi_dưỡng , nâng cao_trình_độ kỹ_năng nghề \n 1 . Phạt tiền đối_với người sử_dụng lao_động có một trong các hành_vi : không đào_tạo cho người lao_động trước khi chuyển người lao_động sang làm nghề khác cho mình ; hợp_đồng đào_tạo nghề không có các nội_dung chủ_yếu theo quy_định tại khoản 2 Điều 62 của Bộ_luật Lao_động ; thu học_phí của người học nghề , tập nghề để làm_việc cho mình ; không ký hợp_đồng đào_tạo với người học nghề , tập nghề để làm_việc cho mình đối_với trường_hợp người sử_dụng lao_động không phải đăng_ký hoạt_động giáo_dục nghề_nghiệp theo quy_định tại khoản 3 Điều 61 của Bộ_luật Lao_động ; không trả lương cho người học nghề , tập nghề trong thời_gian họ học nghề , tập nghề mà trực_tiếp hoặc tham_gia lao_động ; không ký_kết_hợp_đồng lao_động đối_với người học nghề , người tập nghề khi hết thời_hạn học nghề , tập nghề và đủ các điều_kiện theo quy_định của Bộ_luật Lao_động theo một trong các mức sau đây : \n a ) Từ 500.000 đồng đến 2.000.000 đồng đối_với vi_phạm từ 01 người đến 10 người lao_động ; \n b ) Từ 2.000.000 đồng đến 5.000.000 đồng đối_với vi_phạm từ 11 người đến 50 người lao_động ; \n c ) Từ 5.000.000 đồng đến 10.000.000 đồng đối_với vi_phạm từ 51 người đến 100 người lao_động ; \n d ) Từ 10.000.000 đồng đến 15.000.000 đồng đối_với vi_phạm từ 101 người đến 300 người lao_động ; \n đ ) Từ 15.000.000 đồng đến 20.000.000 đồng đối_với vi_phạm từ 301 người lao_động trở lên . \"",
"Trách_nhiệm của Hiệu_trưởng \n 1 . Quản_lý , hướng_dẫn giáo_viên , nhân_viên , học_sinh thực_hiện và phổ_biến đến cha_mẹ học_sinh quy_định của Thông_tư này . \n 2 . Tổ_chức thực_hiện việc đánh_giá học_sinh theo quy_định của Thông_tư này tại cơ_sở giáo_dục ; chỉ_đạo , kiểm_tra , giám_sát việc đánh_giá thường_xuyên , đánh_giá định_kì của giáo_viên ; hàng tháng ghi_nhận_xét và ký xác_nhận vào_sổ theo_dõi và đánh_giá học_sinh ( theo lớp_học ) . \n 3 . Kiểm_tra , đánh_giá việc ghi kết_quả vào_sổ theo_dõi và đánh_giá học_sinh ( theo lớp_học ) , sổ theo_dõi và đánh_giá học_sinh ( của giáo_viên ) , Học_bạ học_sinh của giáo_viên môn_học , giáo_viên chủ_nhiệm ; phê_duyệt việc sửa_chữa điểm , sửa_chữa mức đánh_giá của giáo_viên môn_học khi đã có xác_nhận của giáo_viên chủ_nhiệm . \n 4 . Tổ_chức kiểm_tra , đánh_giá lại các môn_học theo quy_định tại Điều 14 Thông_tư này ; phê_duyệt và công_bố danh_sách học_sinh được lên_lớp sau khi có kết_quả kiểm_tra , đánh_giá lại các môn_học , kết_quả rèn_luyện trong kì nghỉ_hè . \n 5 . Xét_duyệt danh_sách học_sinh : được lên_lớp , đánh_giá lại các môn_học , rèn_luyện trong kì nghỉ_hè , không được lên_lớp , được khen_thưởng . Phê_duyệt kết_quả đánh_giá học_sinh trong sổ theo_dõi và đánh_giá học_sinh ( theo lớp_học ) và Học_bạ học_sinh sau khi tất_cả giáo_viên môn_học và giáo_viên chủ_nhiệm đã ghi đầy_đủ nội_dung .",
"Dưỡng_sức , phục_hồi_sức_khỏe sau khi ốm_đau \n 1 . Người lao_động đã nghỉ_việc hưởng chế_độ ốm_đau đủ thời_gian trong một năm theo quy_định tại Điều 26 của Luật này , trong khoảng thời_gian 30 ngày đầu trở_lại làm_việc mà sức_khỏe chưa phục_hồi thì được nghỉ_dưỡng_sức , phục_hồi_sức_khỏe từ 05 ngày đến 10 ngày trong một năm . \n Thời_gian nghỉ_dưỡng_sức , phục_hồi_sức_khỏe bao_gồm cả ngày nghỉ lễ , nghỉ Tết , ngày nghỉ hằng tuần . Trường_hợp có thời_gian nghỉ_dưỡng_sức , phục_hồi_sức_khỏe từ cuối năm trước chuyển_tiếp sang đầu năm sau thì thời_gian nghỉ đó được tính cho năm trước . \n 2 . Số ngày nghỉ_dưỡng_sức , phục_hồi_sức_khỏe do người sử_dụng lao_động và Ban_Chấp_hành công_đoàn cơ_sở quyết_định , trường_hợp đơn_vị sử_dụng lao_động chưa có công_đoàn cơ_sở thì do người sử_dụng lao_động quyết_định như sau : \n a ) Tối_đa 10 ngày đối_với người lao_động sức_khỏe chưa phục_hồi sau thời_gian ốm_đau do mắc bệnh cần chữa_trị dài ngày ; \n b ) Tối_đa 07 ngày đối_với người lao_động sức_khỏe chưa phục_hồi sau thời_gian ốm_đau do phải phẫu_thuật ; \n c ) Bằng 05 ngày đối_với các trường_hợp khác . \n 3 . Mức hưởng dưỡng_sức , phục_hồi_sức_khỏe sau khi ốm_đau một ngày bằng 30 % mức lương cơ_sở ."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from bkai-foundation-models/vietnamese-bi-encoder. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 256, 'do_lower_case': False}) with Transformer model: RobertaModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
sentences = [
'Ai có thẩm_quyền thu_hồi Giấy chứng_nhận đủ điều_kiện kinh_doanh dịch_vụ xếp_hạng tín_nhiệm đối_với công_ty trách_nhiệm hữu_hạn ?',
'Thu_hồi Giấy chứng_nhận đủ điều_kiện kinh_doanh \n … \n 3 . Bộ Tài_chính ra quyết_định thu_hồi Giấy chứng_nhận đủ điều_kiện kinh_doanh đối_với trường_hợp quy_định Khoản 1 Điều này . \n 4 . Quyết_định thu_hồi Giấy chứng_nhận đủ điều_kiện kinh_doanh của doanh_nghiệp được công_bố trên trang thông_tin điện_tử của Bộ Tài_chính . \n 5 . Doanh_nghiệp phải chấm_dứt ngay các hoạt_động xếp_hạng tín_nhiệm và dịch_vụ liên_quan đến xếp_hạng tín_nhiệm kể từ thời_điểm Giấy chứng_nhận đủ điều_kiện kinh_doanh tự_động bị hết hiệu_lực ; hoặc từ thời_điểm Quyết_định thu_hồi Giấy chứng_nhận đủ điều_kiện kinh_doanh có hiệu_lực thi_hành .',
'Nghỉ học tạm_thời , nghỉ ốm \n ... \n 2 . Người học được tạm hoãn học môn_học , học_phần theo kế_hoạch đào_tạo của cơ_sở đào_tạo giáo_viên và phải hoàn_thành môn_học , học_phần tạm hoãn đó trong quỹ thời_gian tối_đa hoàn_thành chương_trình đào_tạo giáo_viên nếu thuộc một hoặc nhiều trường_hợp sau : \n a ) Vì lý_do sức_khỏe không bảo_đảm để học môn_học , học_phần đó và phải có giấy xác_nhận của cơ_sở y_tế nơi người học đó khám hoặc điều_trị ; \n b ) Có_lý_do khác không_thể tham_gia hoàn_thành môn_học , học_phần đó , kèm theo minh chứng cụ_thể và phải được thủ_trưởng cơ_sở đào_tạo giáo_viên chấp_thuận . \n 3 . Người học không thuộc trường_hợp quy_định tại khoản 1 , 2 của Điều này , trong trường_hợp có_lý_do chính_đáng thì được nghỉ học đột_xuất theo quy_định của cơ_sở đào_tạo giáo_viên và phải hoàn_thành nhiệm_vụ học_tập theo quy_định , đồng_thời phải bảo_đảm điều_kiện dự thi kết_thúc môn_học , học_phần mới được dự thi kết_thúc môn_học , học_phần . \n 4 . Thời_gian nghỉ học tạm_thời được tính vào thời_gian tối_đa để người học hoàn_thành chương_trình đào_tạo giáo_viên được quy_định tại Điều 4 của Quy_chế này . \n 5 . Thủ_trưởng cơ_sở đào_tạo giáo_viên quy_định cụ_thể việc nghỉ học tạm_thời của người học .',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Dự_thảo báo_cáo công_tác phổ_biến , giáo_dục pháp_luật của cơ_quan trong Bộ Quốc_phòng có phải lấy ý_kiến của thành_viên Hội_đồng Phối_hợp phổ_biến , giáo_dục pháp_luật cấp báo_cáo không ? |
Chế_độ báo_cáo , thông_tin phổ_biến , giáo_dục pháp_luật |
Đối_tượng và điều_kiện tham_gia đào_tạo , bồi_dưỡng kiểm_toán nhà_nước ở nước_ngoài ? |
Đối_tượng và điều_kiện tham_gia đào_tạo , bồi_dưỡng ở nước_ngoài |
Việc nâng bậc lương trước thời_hạn đối_với viên_chức ngành xây_dựng được thực_hiện vào thời_gian nào ? |
Nguyên_tắc xét nâng bậc lương trước thời_hạn do lập thành_tích xuất_sắc trong thực_hiện nhiệm_vụ |
CachedMultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"mini_batch_size": 1024
}
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Đất nông_nghiệp chưa có giấy chứng_nhận quyền sử_dụng đất thì có_thể xin cấp giấy chứng_nhận hay không ? |
" Điều 100 . Cấp Giấy chứng_nhận quyền sử_dụng đất , quyền sở_hữu nhà ở và tài_sản khác gắn liền với đất cho hộ gia_đình , cá_nhân , cộng_đồng dân_cư đang sử_dụng đất có giấy_tờ về quyền sử_dụng đất |
Phạm_vi điều_chỉnh của Luật_Đấu_thầu 2013 được quy_định ra sao ? |
" Điều 1 . Phạm_vi điều_chỉnh |
Ghi tên thuốc trong Danh_mục thuốc tân_dược thuộc phạm_vi được hưởng của người tham_gia BHYT theo nguyên_tắc gì ? |
Nguyên_tắc xây_dựng Danh_mục thuốc tân_dược thuộc phạm_vi được hưởng của người tham_gia_bảo_hiểm y_tế ( BHYT ) |
CachedMultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"mini_batch_size": 1024
}
eval_strategy: stepsper_device_train_batch_size: 32per_device_eval_batch_size: 32learning_rate: 2e-05weight_decay: 0.01num_train_epochs: 5warmup_ratio: 0.1fp16: Trueload_best_model_at_end: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 32per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.01adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 5max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: Truefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss |
|---|---|---|---|
| 0.0739 | 100 | 0.1336 | - |
| 0.1478 | 200 | 0.1232 | - |
| 0.2217 | 300 | 0.1182 | 0.0948 |
| 0.2956 | 400 | 0.0972 | - |
| 0.3695 | 500 | 0.0874 | - |
| 0.4435 | 600 | 0.0834 | 0.0694 |
| 0.5174 | 700 | 0.0731 | - |
| 0.5913 | 800 | 0.0607 | - |
| 0.6652 | 900 | 0.0657 | 0.0586 |
| 0.7391 | 1000 | 0.0521 | - |
| 0.8130 | 1100 | 0.0621 | - |
| 0.8869 | 1200 | 0.0522 | 0.0521 |
| 0.9608 | 1300 | 0.0519 | - |
| 1.0347 | 1400 | 0.0496 | - |
| 1.1086 | 1500 | 0.0438 | 0.0480 |
| 1.1826 | 1600 | 0.0471 | - |
| 1.2565 | 1700 | 0.046 | - |
| 1.3304 | 1800 | 0.0493 | 0.0452 |
| 1.4043 | 1900 | 0.0465 | - |
| 1.4782 | 2000 | 0.0445 | - |
| 1.5521 | 2100 | 0.0419 | 0.0411 |
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
@misc{gao2021scaling,
title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
year={2021},
eprint={2101.06983},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Base model
bkai-foundation-models/vietnamese-bi-encoder