728x90
Data Preparation for SFT and PEFT - NVIDIA Docs
This section provides detailed steps to prepare a packed Sequence-to-Sequence Fine-Tuning (SFT) dataset for Gemma models, using the example of the “dolly” dataset. Although we focus on “dolly”, the methodology should be applicable to any dataset. T
docs.nvidia.com
위 링크보고 진행한거니 참고하자...
=================== =================== ===================
1. SFT와 PEFT를 위한 data preparation
# huggingface에서 아래 데이터셋 가져오기 git clone https://huggingface.co/datasets/databricks/databricks-dolly-15k # json 파일이 아래 사이즈가 맞는지 확인 $ du -sh databricks-dolly-15k/databricks-dolly-15k.jsonl 13M databricks-dolly-15k/databricks-dolly-15k.jsonl => 사이즈가 안맞는다면 다음과 같이 가져오기 wget https://huggingface.co/datasets/databricks/databricks-dolly-15k/resolve/main/databricks-dolly-15k.jsonl # gemma 모델 관련 docker image 가져오기 docker run --gpus device=1 --shm-size=2g --net=host --ulimit memlock=-1 --rm -it -v ${PWD}:/workspace -w /workspace -v ${PWD}/results:/results nvcr.io/nvidia/nemo:24.01.gemma bash # data processing python3 /opt/NeMo-Megatron-Launcher/launcher_scripts/nemo_launcher/collections/dataprep_scripts/dolly_dataprep/preprocess.py --input databricks-dolly-15k/databricks-dolly-15k.jsonl => 통해서 output.jsonl 생성하자 # 데이터셋 나누기 (validation, train, test) => step 3에 있는 python 파일 가지고 생성하기 # gemma-7b 설치하기 https://huggingface.co/google/gemma-7b => 이때 username은 내가 설정한 huggingface 이름이고 비밀번호는 huggingface에서 access tokens 생성해서 토큰 값을 넣어줘야 한다. # .nemo 파일 포맷 패키징 root@a2c841c42404:/opt/NeMo/jhhan/hugginface# cat make_nemo.py import os import zipfile def create_nemo_file(output_dir, nemo_file_name): with zipfile.ZipFile(nemo_file_name, 'w', zipfile.ZIP_DEFLATED) as zfile: # 모델 구성 파일 추가 zfile.write(os.path.join(output_dir, 'config.json'), arcname='config.json') # 토크나이저 파일 추가 zfile.write(os.path.join(output_dir, 'tokenizer.json'), arcname='tokenizer.json') zfile.write(os.path.join(output_dir, 'tokenizer.model'), arcname='tokenizer.model') # 가중치 파일 추가 for i in range(1, 5): weight_file = f'model-0000{i}-of-00004.safetensors' zfile.write(os.path.join(output_dir, weight_file), arcname=weight_file) # 다른 필수 파일들 추가 # 예를 들어, README.md, generation_config.json 등도 포함할 수 있습니다. create_nemo_file('/opt/NeMo/jhhan/hugginface/gemma-7b', 'gemma-7b.nemo') 위 python 파일로 위 gemma-7b를 .nemo 파일로 패키징 했다. # Packaged된 데이터셋 준비하기 python /workspace/sequence_packing/tokenize_dataset.py \ model.data.train_ds.file_names=[/path/to/training.jsonl] \ model.data.train_ds.max_seq_length=4096 \ model.restore_from_path=/path/to/gemma-7b.nemo \# any gemma .nemo models works here +output_path=/path/to/my_dataset.npy 위에서 경로들 잘 수정해서 위에서 생성한 gemma-7b.nemo랑 같이 잘 생성해보기 |
728x90
'Nvidia > AI' 카테고리의 다른 글
slurm Admin (0) | 2024.05.20 |
---|---|
slurm 설치 (0) | 2024.05.20 |
CNN (0) | 2023.09.05 |
영화 리뷰 인공지능 만들기 (0) | 2023.09.05 |
Word2Vec (0) | 2023.09.05 |