diff --git a/build_paddle_env.sh b/build_paddle_env.sh index e73f7e071..33be36d11 100644 --- a/build_paddle_env.sh +++ b/build_paddle_env.sh @@ -57,23 +57,23 @@ if command -v nvcc > /dev/null 2>&1; then case $cuda_version in "11.2") echo "安装CUDA 11.2版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu112/ + $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu112/ ;; "11.6") echo "安装CUDA 11.6版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu116/ + $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu116/ ;; "11.7") echo "安装CUDA 11.7版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu117/ + $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu117/ ;; "11.8") echo "安装CUDA 11.8版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ + $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ ;; "12.3") echo "安装CUDA 12.3版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/ + $PYTHON_CMD -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/ ;; *) echo "警告: 不支持的CUDA版本 ($cuda_version)" @@ -83,14 +83,14 @@ if command -v nvcc > /dev/null 2>&1; then esac else echo "未检测到CUDA。安装CPU版本的paddlepaddle..." - $PYTHON_CMD -m pip install paddlepaddle==3.0.0b2 + $PYTHON_CMD -m pip install paddlepaddle==3.0.0b1 fi # 验证安装 -echo "验证PaddlePaddle 3.0.0b2安装..." +echo "验证PaddlePaddle 3.0.0b1安装..." if $PYTHON_CMD -c "import paddle; paddle.utils.run_check()"; then - echo "PaddlePaddle 3.0.0b2安装成功!" + echo "PaddlePaddle 3.0.0b1安装成功!" else - echo "PaddlePaddle 3.0.0b2安装验证失败,请检查安装日志" + echo "PaddlePaddle 3.0.0b1安装验证失败,请检查安装日志" exit 1 fi \ No newline at end of file diff --git a/paddlemix/datacopilot/readme.md b/paddlemix/datacopilot/readme.md index 40188be47..7eb12b97e 100644 --- a/paddlemix/datacopilot/readme.md +++ b/paddlemix/datacopilot/readme.md @@ -9,11 +9,28 @@ +# DataCopilot 使用教程 -## 定位 +<<<<<<< HEAD +# DataCopilot 使用教程 + +======= +>>>>>>> 679b487401c6588d21d30032fa46b22da078ad79 +## 一、简介 +**DataCopilot** 是 **PaddleMIX** 提供的多模态数据处理工具箱,旨在帮助开发者高效地进行数据预处理、增强和转换等操作。通过 **DataCopilot**,你可以以低代码量的方式实现数据的基本操作,从而加速模型训练和推理的过程。 + +## 二、定位 DataCopilot是PaddleMIX 2.0版本新推出的多模态数据处理工具箱,理念是把数据作为多模态算法的一部分参与迭代的全流程,让开发者根据特定任务以低代码量实现数据的基本操作。 -## 核心概念 +## 三、安装与导入 +首先,确保你已经安装了 **PaddleMIX**。如果尚未安装,请参考 **PaddleMIX** 的官方文档进行安装。 +安装完成后,你可以通过以下方式导入 **DataCopilot**: +```python +from paddlemix.datacopilot.core import MMDataset, SCHEMA +import paddlemix.datacopilot.ops as ops +``` + +## 四、核心概念 工具核心概念包括Schema和Dataset。Schema用于定义多模态数据组织结构和字段名字。MMDataset作为数据操作的核心类,为存储,查看,转换,生成等操作的基本对象。 ### SCHEMA @@ -66,7 +83,127 @@ def info(dataset: MMDataset) -> None: ... ``` -## 使用案例 +## 五、基本操作 +### 1. 加载数据 +使用 `MMDataset.from_json` 方法从 JSON 文件中加载数据: +```python +dataset = MMDataset.from_json('path/to/your/dataset.json') +``` + +<<<<<<< HEAD +使用 `MMDataset.load_jsonl` 方法从 JSONL 文件中加载数据: +```python +dataset = MMDataset.load_jsonl('path/to/your/dataset.jsonl') +``` + +使用 `MMDataset.from_h5` 方法从 h5 文件中加载数据: +```python +dataset = MMDataset.from_h5('path/to/your/dataset.h5') +``` + +======= +>>>>>>> 679b487401c6588d21d30032fa46b22da078ad79 +### 2. 查看数据 +使用 info 和 head 方法查看数据集的基本信息和前几个样本: +```python +dataset.info() +dataset.head() +``` + +### 3. 数据切片 +支持对数据集进行切片操作,返回一个新的 MMDataset 对象: +```python +subset = dataset[:100] # 获取前100个样本 +``` + +### 4. 数据增强 +使用 map 方法对数据集中的样本进行增强操作: +```python +def augment_data(item): + # 定义你的数据增强逻辑 + pass + +augmented_dataset = dataset.map(augment_data, max_workers=8, progress=True) +``` + +### 5. 数据过滤 +使用 filter 方法根据条件过滤数据集中的样本: +```python +def is_valid_sample(item): + # 定义你的过滤条件 + return True or False + +filtered_dataset = dataset.filter(is_valid_sample).nonempty() # 返回过滤后的非空数据集 +``` + +### 6. 导出数据 +使用 export_json 方法将处理后的数据集导出为 JSON 文件: +```python +augmented_dataset.export_json('path/to/your/output_dataset.json') +``` + +<<<<<<< HEAD +使用 export_jsonl 方法将处理后的数据集导出为 JSONL 文件: +```python +augmented_dataset.export_jsonl('path/to/your/output_dataset.jsonl') +``` + +使用 export_h5 方法将处理后的数据集导出为 h5 文件: +```python +augmented_dataset.export_h5('path/to/your/output_dataset.h5') +``` +======= +>>>>>>> 679b487401c6588d21d30032fa46b22da078ad79 +## 六、高级操作 +### 1. 自定义 Schema +通过定义 SCHEMA 来指定数据集的字段和类型: +```python +schema = SCHEMA( + image={'type': 'image', 'required': True}, + text={'type': 'str', 'required': True}, + label={'type': 'int', 'required': False} +) +``` +使用自定义 schema 加载数据 +```python +custom_dataset = MMDataset.from_json('path/to/your/dataset.json', schema=schema) +``` + +### 2. 批量处理 +使用 batch 方法将数据集中的样本按批次处理,适用于需要批量操作的情况: +```python +batch_size = 32 +<<<<<<< HEAD +batched_dataset = dataset[i: i + batch_size] +======= +batched_dataset = dataset.batch(batch_size) +for batch in batched_dataset: + # 对每个批次进行处理 + pass +>>>>>>> 679b487401c6588d21d30032fa46b22da078ad79 +``` + +### 3. 数据采样 +使用 shuffle 方法打乱数据集,或使用 sample 方法随机抽取样本: +```python +shuffled_dataset = dataset.shuffle() +sampled_dataset = dataset.sample(10) # 随机抽取10个样本 +``` + +<<<<<<< HEAD +### 4. 链式调用 +```python + MMDataset.from_json(orig_path) + .sanitize(schema=SCHEMA.MM, max_workers=8, progress=True, ) + .map(functools.partial(ops.convert_schema, out_schema=SCHEMA.MIX), max_workers=8) + .filter(filter_text_token, max_workers=8, progress=True, order=True) + .nonempty() + .export_json(new_path) +``` +======= +>>>>>>> 679b487401c6588d21d30032fa46b22da078ad79 + +## 七、使用案例 1. 导入导出 ``` import functools @@ -102,3 +239,6 @@ dataset = dataset.filter(is_wanted).nonempty() 3. LLaVA-SFT训练 数据准备和训练流程参考项目[pp_cap_instruct](https://aistudio.baidu.com/projectdetail/7917712) +## 八、总结 +**DataCopilot** 是 **PaddleMIX** 提供的一个强大且灵活的多模态数据处理工具箱。 +通过掌握其基本操作和高级功能,你可以高效地处理、增强和转换多模态数据,为后续的模型训练和推理提供有力支持。 \ No newline at end of file diff --git a/paddlemix/examples/llava/pretrain.py b/paddlemix/examples/llava/pretrain.py index 542c1dc23..463e1c654 100755 --- a/paddlemix/examples/llava/pretrain.py +++ b/paddlemix/examples/llava/pretrain.py @@ -156,11 +156,11 @@ def main(): if training_args.benchmark: total_effective_samples = total_samples * training_args.num_train_epochs effective_samples_per_second = total_effective_samples / train_result.metrics["train_runtime"] - # mem_gpu = ( - # train_result.metrics["train_mem_gpu_peaked_delta"] + train_result.metrics["train_mem_gpu_alloc_delta"] - # ) + mem_gpu = ( + train_result.metrics["train_mem_gpu_peaked_delta"] + train_result.metrics["train_mem_gpu_alloc_delta"] + ) logger.info(f"Effective_samples_per_second: {effective_samples_per_second} ") - # logger.info(f"train_mem_gpu_peaked: {int(mem_gpu/ (2**20))} MB") + logger.info(f"train_mem_gpu_peaked: {int(mem_gpu/ (2**20))} MB") logger.info("Benchmark done.") else: trainer.save_model(merge_tensor_parallel=training_args.tensor_parallel_degree > 1) diff --git a/paddlemix/tools/supervised_finetune.py b/paddlemix/tools/supervised_finetune.py index 503c3c093..4fb6bbfb3 100755 --- a/paddlemix/tools/supervised_finetune.py +++ b/paddlemix/tools/supervised_finetune.py @@ -182,11 +182,11 @@ def main(): if training_args.benchmark: total_effective_samples = total_samples * training_args.num_train_epochs effective_samples_per_second = total_effective_samples / train_result.metrics["train_runtime"] - # mem_gpu = ( - # train_result.metrics["train_mem_gpu_peaked_delta"] + train_result.metrics["train_mem_gpu_alloc_delta"] - # ) + mem_gpu = ( + train_result.metrics["train_mem_gpu_peaked_delta"] + train_result.metrics["train_mem_gpu_alloc_delta"] + ) logger.info(f"Effective_samples_per_second: {effective_samples_per_second} ") - # logger.info(f"train_mem_gpu_peaked: {int(mem_gpu/ (2**20))} MB") + logger.info(f"train_mem_gpu_peaked: {int(mem_gpu/ (2**20))} MB") logger.info("Benchmark done.") else: trainer.save_model(merge_tensor_parallel=training_args.tensor_parallel_degree > 1) diff --git a/paddlemix_applications.md b/paddlemix_applications.md index 1f46f2f4c..169b06c23 100644 --- a/paddlemix_applications.md +++ b/paddlemix_applications.md @@ -1,248 +1,107 @@ # 🎨 飞桨PaddleMIX项目分类汇总 ## 🎯 一、多模态创作类 -1. [国庆阅兵盛典图绘:盛世华章](https://aistudio.baidu.com/projectdetail/8529744) - - 🖼️ 类型:文生图 - - ✨ 功能:基于PaddleMIX的创意速绘 - - 🔥 热度:🔥🔥🔥 - -2. [PaddleMIX开学季海报生成](https://aistudio.baidu.com/projectdetail/8240734) - - 🌇 类型:文生图 - - 🎓 功能:开学季和教师节主题海报生成 - - 🔥 热度:🔥🔥🔥 - -3. [PaddleMIX黑神话悟空海报生成](https://aistudio.baidu.com/projectdetail/8555550) - - 🎨 类型:文生图 - - 🎮 功能:黑神话悟空主题海报生成 - - 🔥 热度:🔥🔥🔥 - -4. [AI智能节日海报](https://aistudio.baidu.com/projectdetail/8293232) - - 🎨 类型:文生图 - - 🎉 功能:文心大模型与PaddleMIX驱动的AI智能海报生成 - - 🔥 热度:🔥🔥 - -5. [AI建筑设计助手](https://aistudio.baidu.com/projectdetail/8288584) - - 🏗️ 类型:图像渲染 - - 🎯 功能:建筑设计图快速渲染解决方案 - - 🔥 热度:🔥🔥 - -6. [PaddleMIX教师节文图生成器](https://aistudio.baidu.com/projectdetail/8530911) - - 📚 类型:文生图 - - 🎓 功能:教师节主题创意生成 - - 🔥 热度:🔥🔥 - -7. [文本+音乐生成图片](https://aistudio.baidu.com/projectdetail/8314111) - - 🎵 类型:多模态生成 - - 🖼️ 功能:基于文本和音乐的图像生成 - - 🔥 热度:🔥🔥 - -8. [个性化GIF生成](https://aistudio.baidu.com/projectdetail/8321341) - - 🌠 类型:文生图 - - 🍡 功能:基于Hotshot-XL模型的GIF生成 - - 🔥 热度:🔥🔥 - -9. [绿心智绘:环保创意海报](https://aistudio.baidu.com/projectdetail/8362605) - - 🌻 类型:文生图 - - 🍀 功能:环保创意海报生成 - - 🔥 热度:🔥🔥 - -10. [墨韵融生:多模态水墨创艺](https://aistudio.baidu.com/projectdetail/8515323) - - 🌉 类型:文生图 - - 🎨 功能:水墨画作品生成 - - 🔥 热度:🔥 - -11. [PaddleMIX的PPT生成器](https://aistudio.baidu.com/projectdetail/8545186) - - 💻 类型:幻灯片生成 - - 💡 功能:内容生成、图片设计和PPT文件渲染 - - 🔥 热度:🔥 - -12. [那兔海报](https://aistudio.baidu.com/projectdetail/8331103) - - 🐰 类型:文生图 - - 🔅 功能:那兔海报生成 - - 🔥 热度:🔥 +1. [国庆阅兵盛典图绘:盛世华章](https://aistudio.baidu.com/projectdetail/8342426) + - 🖼️ 类型:文生图 + - ✨ 功能:基于PaddleMIX的创意速绘 -## 🎬 二、视频创作类 -13. [PaddleMIX AnimateAnyone模型应用](https://aistudio.baidu.com/projectdetail/8320311) - - 🎥 类型:图生视频 - - 🎭 功能:依据图片创作视频 - - 🔥 热度:🔥🔥 +2. [AI智能节日海报](https://aistudio.baidu.com/projectdetail/8293232) + - 🎨 类型:文生图 + - 🎉 功能:文心大模型与PaddleMIX驱动的AI智能海报生成 -14. [OpenSora模型应用](https://aistudio.baidu.com/projectdetail/8534189) - - 🎦 类型:文生视频/图生视频 - - 🎪 功能:多模态视频生成 - - 🔥 热度:🔥🔥 +3. [AI建筑设计助手](https://aistudio.baidu.com/projectdetail/8288584) + - 🏗️ 类型:图像渲染 + - 🎯 功能:建筑设计图快速渲染解决方案 -15. [openSora和SVD视频渲染引擎](https://aistudio.baidu.com/projectdetail/8535627) - - 🎮 类型:图像转视频 - - 🎨 功能:图像转换视频渲染 - - 🔥 热度:🔥🔥 +4. [PaddleMIX教师节文图生成器](https://aistudio.baidu.com/projectdetail/8276367) + - 📚 类型:文生图 + - 🎓 功能:教师节主题创意生成 -## 🎵 三、音乐与音频类 -16. [PaddleMIX音乐快速生成器](https://aistudio.baidu.com/projectdetail/8556362) - - 🎧 类型:音乐生成 - - 🎺 功能:基于文本的音乐生成 - - 🔥 热度:🔥🔥🔥 +5. [文本+音乐生成图片](https://aistudio.baidu.com/projectdetail/8314111) + - 🎵 类型:多模态生成 + - 🖼️ 功能:基于文本和音乐的图像生成 -17. [PaddleMIX照片配音生成](https://aistudio.baidu.com/projectdetail/7454890) - - 🎸 类型:音乐生成 - - 🎼 功能:照片的配音生成 - - 🔥 热度:🔥🔥🔥 +## 🎬 二、视频创作类 +6. [PaddleMIX AnimateAnyone模型应用](https://aistudio.baidu.com/projectdetail/8320311) + - 🎥 类型:图生视频 + - 🎭 功能:依据图片创作视频 + +7. [OpenSora模型应用](https://aistudio.baidu.com/projectdetail/8318487) + - 🎦 类型:文生视频/图生视频 + - 🎪 功能:多模态视频生成 -18. [智能视频配乐](https://aistudio.baidu.com/projectdetail/8351571) - - 🎼 类型:音频生成 - - 🎹 功能:视频氛围分析与背景音乐生成 - - 🔥 热度:🔥🔥 +8. [openSora和SVD视频渲染引擎](https://aistudio.baidu.com/projectdetail/8334689) + - 🎮 类型:图像转视频 + - 🎨 功能:图像转换视频渲染 -19. [国庆节音乐贺卡](https://aistudio.baidu.com/projectdetail/8536882) +## 🎵 三、音乐与音频类 +9. [智能视频配乐](https://aistudio.baidu.com/projectdetail/8351571) + - 🎼 类型:音频生成 + - 🎹 功能:视频氛围分析与背景音乐生成 + +10. [国庆节音乐贺卡](https://aistudio.baidu.com/projectdetail/8330341) - 🎸 类型:音乐生成 - 🎺 功能:国庆专属电子音乐贺卡 - - 🔥 热度:🔥🔥 -20. [月圆之夜:音乐与中秋的邂逅](https://aistudio.baidu.com/projectdetail/8311291) +11. [月圆之夜:音乐与中秋的邂逅](https://aistudio.baidu.com/projectdetail/8311291) - 🌕 类型:音乐生成 - 🎶 功能:中秋节主题音乐创作 - - 🔥 热度:🔥🔥 - -21. [音画交响:图片配乐新纪元](https://aistudio.baidu.com/projectdetail/8398422) - - 🎻 类型:音乐生成 - - 🎺 功能:照片的配乐生成 - - 🔥 热度:🔥 - -22. [国庆庆典:音乐与国庆辉煌交响](https://aistudio.baidu.com/projectdetail/8356701) - - 🎹 类型:音乐生成 - - 🎺 功能:基于文本和照片的配乐生成 - - 🔥 热度:🔥 ## 🎊 四、节日主题创作 -23. [国庆写真生成器](https://aistudio.baidu.com/projectdetail/8334575) - - 🎀 类型:图像生成 - - 👗 功能:专属国庆节写真生成 - - 🔥 热度:🔥🔥🔥 - -24. [中秋民俗舞火龙](https://aistudio.baidu.com/projectdetail/8318522) - - 🐉 类型:图像生成 - - 🔥 功能:舞火龙庆典图绘制 - - 🔥 热度:🔥🔥🔥 - -25. [兔绘爱国情:童心海报梦工厂](https://aistudio.baidu.com/projectdetail/8288021) +12. [兔绘爱国情:童心海报梦工厂](https://aistudio.baidu.com/projectdetail/8288021) - 🐰 类型:图像生成 - 🎨 功能:爱国主题童趣海报 - - 🔥 热度:🔥🔥 -26. [创艺·幻绘月饼艺术图](https://aistudio.baidu.com/projectdetail/8540279) +13. [创艺·幻绘月饼艺术图](https://aistudio.baidu.com/projectdetail/8311892) - 🥮 类型:图像生成 - 🎨 功能:月饼艺术创作 - - 🔥 热度:🔥🔥 -27. [PaddleMIX中秋贺卡生成器](https://aistudio.baidu.com/projectdetail/8541174) +14. [PaddleMIX中秋贺卡生成器](https://aistudio.baidu.com/projectdetail/8313814) - 🌙 类型:图像生成 - ✉️ 功能:中秋节贺卡定制 - - 🔥 热度:🔥🔥 - -28. [国庆英雄颂](https://aistudio.baidu.com/projectdetail/8352450) - - 🇨🇳 类型:多模态创作 - - 📣 功能:历史的英雄故事以生动的声音和视觉形式呈现 - - 🔥 热度:🔥🔥 -29. [国庆烟火绘梦](https://aistudio.baidu.com/projectdetail/8352778) - - 🎆 类型:文生图 - - 🎇 功能:数字烟花的生成 - - 🔥 热度:🔥🔥 +15. [中秋民俗舞火龙](https://aistudio.baidu.com/projectdetail/8318522) + - 🐉 类型:图像生成 + - 🔥 功能:舞火龙庆典图绘制 -30. [绘梦国庆-缤纷国庆贺卡](https://aistudio.baidu.com/projectdetail/8542328) +16. [绘梦国庆-缤纷国庆贺卡](https://aistudio.baidu.com/projectdetail/8366554) - 🎉 类型:图像生成 - 🎊 功能:个性化国庆贺卡创作 - - 🔥 热度:🔥 - -31. [感恩有你-感恩节海报设计](https://aistudio.baidu.com/projectdetail/8500805) - - 🍔 类型:图像生成 - - 🍖 功能:感恩节海报生成 - - 🔥 热度:🔥 - -32. [魔境创想-万圣节贺卡生成](https://aistudio.baidu.com/projectdetail/8500805) - - 🎃 类型:图像生成 - - 👻 功能:个性化的万圣节贺卡生成 - - 🔥 热度:🔥 ## 🤖 五、智能助手类 -33. [炉石传说卡牌设计助手](https://aistudio.baidu.com/projectdetail/8543362) +17. [炉石传说卡牌设计助手](https://aistudio.baidu.com/projectdetail/8330884) - 🎮 类型:多模态设计 - 🃏 功能:基于ErnieSDK的游戏卡牌设计 - - 🔥 热度:🔥🔥 -34. [智能宠物识别与养护助手](https://aistudio.baidu.com/projectdetail/8299163) +18. [智能宠物识别与养护助手](https://aistudio.baidu.com/projectdetail/8299163) - 🐾 类型:图像识别/分析 - 🐱 功能:基于QwenVL的宠物护理 - - 🔥 热度:🔥🔥 ## 💡 六、创新应用类 -35. [多模态数字艺术创生](https://aistudio.baidu.com/projectdetail/8382636) +19. [PaddleMIX创意衣橱](https://aistudio.baidu.com/projectdetail/8396196) + - 👔 类型:服饰设计/人脸融合 + - 👗 功能:在线DIY服饰体验 + +20. [多模态数字艺术创生](https://aistudio.baidu.com/projectdetail/8382636) - 🎨 类型:艺术创作 - 🖼️ 功能:数字艺术创作与鉴赏 - - 🔥 热度:🔥🔥 -36. [教学辅助多模态图文生成](https://aistudio.baidu.com/projectdetail/8372762) +21. [主体情境图像个性化生成](https://aistudio.baidu.com/projectdetail/8397326) + - 🎭 类型:图像生成 + - 🖼️ 功能:多模态情境图像生成 + +22. [教学辅助多模态图文生成](https://aistudio.baidu.com/projectdetail/8372762) - 📚 类型:教育应用 - 🎓 功能:教学辅助创作工具 - - 🔥 热度:🔥🔥 -37. ["海参纪念币"文创设计](https://aistudio.baidu.com/projectdetail/8386127) +23. ["海参纪念币"文创设计](https://aistudio.baidu.com/projectdetail/8386127) - 💰 类型:文创设计 - 🎨 功能:纪念币艺术设计 - - 🔥 热度:🔥🔥 -38. [艺术风格迁移](https://aistudio.baidu.com/projectdetail/8549441) +24. [艺术风格迁移](https://aistudio.baidu.com/projectdetail/8372802) - 🎨 类型:风格迁移 - 🖼️ 功能:多模态艺术风格迁移 - - 🔥 热度:🔥🔥 - -39. [爱国卡通角色故事创作](https://aistudio.baidu.com/projectdetail/8356273) - - 📚 类型:多模态创作 - - 🎭 功能:基于ERNIE SDK的角色故事创作 - - 🔥 热度:🔥 -40. [云顶天宫:盗墓笔记场景重现](https://aistudio.baidu.com/projectdetail/8486711) +25. [爱国卡通角色故事创作](https://aistudio.baidu.com/projectdetail/8356273) - 📚 类型:多模态创作 - - 🎭 功能:将小说中场景深度还原 - - 🔥 热度:🔥 - -41. [绘梦长空·风筝韵事](https://aistudio.baidu.com/projectdetail/8404865) - - 🎉 类型:图像理解 - - 📚 功能:讲述中国传统风筝背后的动人故事与制作工艺 - - 🔥 热度:🔥 - -## 七、其他 -42. [基于PaddleMIX的数据集行为标签分类器训推实例](https://aistudio.baidu.com/projectdetail/7917712) - - 🎓 类型:图像理解 - - 🌋 功能:基于LLaVA的行为分类 - - 🔥 热度:🔥🔥🔥 - -43. [PaddleMIX入门AIGC应用](https://aistudio.baidu.com/projectdetail/7583868) - - 📟 类型:多模态生成 - - 📷 功能:图像生成、音频生成、图像变换、图像超分辨率 - - 🔥 热度:🔥🔥 - -44. [PaddleMIX DiT高性能推理实战](https://aistudio.baidu.com/projectdetail/8261962) - - 🎨 类型:图像生成 - - 📚 功能:基于DiT结构的图像生成 - - 🔥 热度:🔥🔥 - -45. [PaddleMIX玩转Stable Diffusion 3](https://aistudio.baidu.com/projectdetail/8494762) - - 🔔 类型:图像生成 - - 🎮 功能:基于Stable Diffusion 3的图像生成 - - 🔥 热度:🔥🔥 - -46. [基于PaddleMIX的数据集行为标签分类器训推实例](https://aistudio.baidu.com/projectdetail/8229498) - - 🎈 类型:图像理解 - - 💎 功能:LLaVA模型训练与使用 - - 🔥 热度:🔥🔥 - -47. [PaddleMIX入门视频生成](https://aistudio.baidu.com/projectdetail/8221041) - - 🎥 类型:视频生成 - - 📺 功能:基于SVD和OpenSora的视频生成 - - 🔥 热度:🔥 - -48. [基于PaddleMIX的高速文生图推理](https://aistudio.baidu.com/projectdetail/8232803) - - 🎓 类型:图像生成 - - 🎨 功能:LCM模型的快速图像生成 - - 🔥 热度:🔥 \ No newline at end of file + - 🎭 功能:基于ERNIE SDK的角色故事创作 \ No newline at end of file diff --git a/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-lora_sft_bs16_bf16_DP.sh b/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b_pretrain_bs16_bf16_DP.sh similarity index 70% rename from tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-lora_sft_bs16_bf16_DP.sh rename to tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b_pretrain_bs16_bf16_DP.sh index c4960d6d4..95b82bd27 100644 --- a/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-lora_sft_bs16_bf16_DP.sh +++ b/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b_pretrain_bs16_bf16_DP.sh @@ -13,15 +13,16 @@ # limitations under the License. model=llava -model_item=llava-v1.6-vicuna-13b-lora_sft +model_item=vicuna-13b-v1.5 bs_item=16 fp_item=bf16 run_mode=DP device_num=N1C8 max_epochs=3 num_workers=0 +train_stage=pretrain # get data -bash ./test_tipc/dygraph/dp/${model}/benchmark_common/prepare.sh +bash tests/test_tipc/dygraph/dp/${model}/benchmark_common/prepare.sh # run -bash ./test_tipc/dygraph/dp/${model}/benchmark_common/run_benchmark.sh ${model_item} ${bs_item} ${fp_item} ${run_mode} ${device_num} ${max_epochs} ${num_workers} 2>&1; +bash tests/test_tipc/dygraph/dp/${model}/benchmark_common/run_benchmark.sh ${model_item} ${bs_item} ${fp_item} ${run_mode} ${device_num} ${max_epochs} ${num_workers} ${train_stage} 2>&1; diff --git a/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-pretrain_bs16_bf16_DP.sh b/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-7b_sft_bs16_bf16_DP.sh similarity index 70% rename from tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-pretrain_bs16_bf16_DP.sh rename to tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-7b_sft_bs16_bf16_DP.sh index 601cf497f..77e0cb493 100644 --- a/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-13b-pretrain_bs16_bf16_DP.sh +++ b/tests/test_tipc/dygraph/dp/llava/N1C8/llava-v1.6-vicuna-7b_sft_bs16_bf16_DP.sh @@ -13,15 +13,16 @@ # limitations under the License. model=llava -model_item=llava-v1.6-vicuna-13b-pretrain +model_item=llava-v1.6-vicuna-7b bs_item=16 fp_item=bf16 run_mode=DP device_num=N1C8 max_epochs=3 num_workers=0 +train_stage=sft # get data -bash ./test_tipc/dygraph/dp/${model}/benchmark_common/prepare.sh +bash tests/test_tipc/dygraph/dp/${model}/benchmark_common/prepare.sh # run -bash ./test_tipc/dygraph/dp/${model}/benchmark_common/run_benchmark.sh ${model_item} ${bs_item} ${fp_item} ${run_mode} ${device_num} ${max_epochs} ${num_workers} 2>&1; +bash tests/test_tipc/dygraph/dp/${model}/benchmark_common/run_benchmark.sh ${model_item} ${bs_item} ${fp_item} ${run_mode} ${device_num} ${max_epochs} ${num_workers} ${train_stage} 2>&1; diff --git a/tests/test_tipc/dygraph/dp/llava/benchmark_common/prepare.sh b/tests/test_tipc/dygraph/dp/llava/benchmark_common/prepare.sh index 16535a048..0813d3704 100644 --- a/tests/test_tipc/dygraph/dp/llava/benchmark_common/prepare.sh +++ b/tests/test_tipc/dygraph/dp/llava/benchmark_common/prepare.sh @@ -19,7 +19,7 @@ wget https://paddlenlp.bj.bcebos.com/models/community/paddlemix/benchmark/llava_ tar -xf llava_bench_data.tar mv llava_bench_data /root/.paddlemix/datasets/ rm -rf llava_bench_data.tar -ln -s /root/.paddlemix/datasets/llava_bench_data ./ +ln -s /root/.paddlemix/datasets/llava_bench_data ../ export http_proxy=agent.baidu.com:8188 export https_proxy=agent.baidu.com:8188 @@ -32,8 +32,7 @@ python -m pip install -e ../ python -m pip install --upgrade paddlenlp pybind11 regex sentencepiece tqdm visualdl attrdict easydict pyyaml -i https://mirror.baidu.com/pypi/simple pip install -r ../paddlemix/appflow/requirements.txt pip install -U ppdiffusers -bash ../build_paddle_env.sh -# python -m pip install https://paddle-wheel.bj.bcebos.com/develop/linux/linux-gpu-cuda11.8-cudnn8.6-mkl-gcc8.2-avx/paddlepaddle_gpu-0.0.0.post118-cp310-cp310-linux_x86_64.whl +python -m pip install https://paddle-wheel.bj.bcebos.com/develop/linux/linux-gpu-cuda11.8-cudnn8.6-mkl-gcc8.2-avx/paddlepaddle_gpu-0.0.0.post118-cp310-cp310-linux_x86_64.whl python -m pip install paddlenlp==3.0.0b2 python -m pip install huggingface_hub==0.23.0 python -m pip list diff --git a/tests/test_tipc/dygraph/dp/llava/benchmark_common/run_benchmark.sh b/tests/test_tipc/dygraph/dp/llava/benchmark_common/run_benchmark.sh index eb926c893..b351cc38c 100644 --- a/tests/test_tipc/dygraph/dp/llava/benchmark_common/run_benchmark.sh +++ b/tests/test_tipc/dygraph/dp/llava/benchmark_common/run_benchmark.sh @@ -17,12 +17,13 @@ # Test training benchmark for a model. # Usage:bash benchmark/run_benchmark.sh ${model_item} ${bs_item} ${fp_item} ${run_mode} ${device_num} function _set_params(){ - model_item=${1:-"llava-v1.6-vicuna-7b-sft"} # (必选) 模型 item |llava-v1.6-vicuna-7b-sft|llava-v1.6-vicuna-13b-sft|llava-v1.6-vicuna-7b-pretrain|llava-v1.6-vicuna-7b-lora_sft|llava-v1.6-vicuna-13b-pretrain|llava-v1.6-vicuna-13b-lora_sft + model_item=${1:-"llava-v1.6-vicuna-7b"} # (必选) 模型 item |llava-v1.6-vicuna-7b|llava-v1.6-vicuna-13b| vicuna-13b-v1.5|vicuna-7b-v1.5 base_batch_size=${2:-"1"} # (必选) 如果是静态图单进程,则表示每张卡上的BS,需在训练时*卡数 fp_item=${3:-"bf16"} # (必选) fp32|fp16|bf16 run_mode=${4:-"DP"} # (必选) MP模型并行|DP数据并行|PP流水线并行|混合并行DP1-MP1-PP1|DP1-MP4-PP1 device_num=${5:-"N1C1"} # (必选) 使用的卡数量,N1C1|N1C8|N4C32 (4机32卡) profiling=${PROFILING:-"false"} # (必选) Profiling 开关,默认关闭,通过全局变量传递 + train_stage=${8:-"sft"} # (必选) 训练阶段,sft|lora_sft|pretrain model_repo="PaddleMIX" # (必选) 模型套件的名字 speed_unit="sample/sec" # (必选)速度指标单位 @@ -34,7 +35,7 @@ function _set_params(){ is_large_model=False # (可选)普通模型默认为False,如果添加大模型且只取一条ips设置为True # 以下为通用执行命令,无特殊可不用修改 - model_name=${model_item}_bs${base_batch_size}_${fp_item}_${run_mode} # (必填) 与竞品名称对齐 + model_name=${model_item}_bs${base_batch_size}_${fp_item}_${run_mode} # (必填) 且格式不要改动,与竞品名称对齐 device=${CUDA_VISIBLE_DEVICES//,/ } arr=(${device}) num_gpu_devices=${#arr[*]} @@ -58,34 +59,6 @@ function _train(){ log_file=${train_log_file} fi - #模型权重 - if [ ${model_item} = "llava-v1.6-vicuna-7b-sft" ]; then - model_path="llava-v1.6-vicuna-7b" - train_stage="sft" - fi - if [ ${model_item} = "llava-v1.6-vicuna-7b-pretrain" ]; then - model_path="vicuna-7b-v1.5" - train_stage="pretrain" - fi - if [ ${model_item} = "llava-v1.6-vicuna-7b-lora_sft" ]; then - model_path="llava-v1.6-vicuna-7b" - train_stage="lora_sft" - fi - if [ ${model_item} = "llava-v1.6-vicuna-13b-sft" ]; then - model_path="llava-v1.6-vicuna-13b" - train_stage="sft" - fi - if [ ${model_item} = "llava-v1.6-vicuna-13b-pretrain" ]; then - model_path="vicuna-13b-v1.5" - train_stage="pretrain" - fi - if [ ${model_item} = "llava-v1.6-vicuna-13b-lora_sft" ]; then - model_path="llava-v1.6-vicuna-13b" - train_stage="lora_sft" - fi - - - #训练精度 if [ ${fp_item} = "fp16O1" ]; then use_fp16_cmd="--fp16 True --fp16_opt_level O1" @@ -103,7 +76,7 @@ function _train(){ use_fp16_cmd="--bf16 True --fp16_opt_level O2" FUSED=True fi - rm -rf ./work_dirs/${model_item}_benchmark + rm -rf ./work_dirs/${model_item}_${train_stage}_benchmark export FLAG_USE_EMA=0 export FLAG_BENCHMARK=1 @@ -113,22 +86,20 @@ function _train(){ export FLAG_FUSED_LINEAR=${FUSED} # add some flags - export FLAGS_use_cuda_managed_memory=true - export FLAGS_allocator_strategy=auto_growth - export FLAGS_embedding_deterministic=1 - export FLAGS_cudnn_deterministic=1 - export NVIDIA_TF32_OVERRIDE=0 + export FLAGS_eager_delete_tensor_gb=0.0 + export FLAGS_fraction_of_gpu_memory_to_use=0.98 + export FLAGS_conv_workspace_size_limit=4096 export http_proxy=agent.baidu.com:8188 export https_proxy=agent.baidu.com:8188 #训练阶段 if [ ${train_stage} = "sft" ]; then - train_cmd="../paddlemix/tools/supervised_finetune.py \ - --do_train true \ - --model_name_or_path liuhaotian/${model_path} \ - --dataset {\"train\":[{\"name\":\"chatml_dataset\",\"data_files\":\"./llava_bench_data/ScienceQA_val_500.json\",\"chat_template\":\"./llava_bench_data/chat_template.json\"}]} \ + train_cmd="./paddlemix/tools/supervised_finetune.py \ + --do_train \ + --model_name_or_path "liuhaotian/${model_item}" \ + --dataset '{"train":[{"name": "chatml_dataset", "data_files": "/root/.paddlemix/datasets/llava_bench_data/llava_train_part.json","chat_template":"/root/.paddlenlp/models/liuhaotian/llava-v1.6-vicuna-7b/chat_template.json"}]}' \ --mixtoken false \ - --output_dir ./work_dirs/${model_item}_benchmark \ + --output_dir ./work_dirs/${model_item}_${train_stage}_benchmark \ --overwrite_output_dir true \ --logging_steps=1 \ --recompute true \ @@ -138,44 +109,41 @@ function _train(){ --num_train_epochs ${max_epochs} \ --learning_rate 2e-05 \ --warmup_ratio 0.03 \ - --lr_scheduler_type cosine \ - --evaluation_strategy no \ - --save_strategy no \ + --lr_scheduler_type "cosine" \ + --evaluation_strategy "no" \ + --save_strategy "no" \ --max_length 2048 \ ${use_fp16_cmd} \ --do_eval false \ --disable_tqdm true \ - --tensor_parallel_degree=1 \ - --sharding_parallel_degree=8 \ - --sharding="stage2" \ - --benchmark true + --benchmark True " fi if [ ${train_stage} = "lora_sft" ]; then - train_cmd="../paddlemix/tools/supervised_finetune.py \ - --do_train true \ - --model_name_or_path liuhaotian/${model_path} \ - --dataset {\"train\":[{\"name\":\"chatml_dataset\",\"data_files\":\"./llava_bench_data/ScienceQA_val_500.json\",\"chat_template\":\"./llava_bench_data/chat_template.json\"}]} \ + train_cmd="./paddlemix/tools/supervised_finetune.py \ + --do_train \ + --model_name_or_path "liuhaotian/${model_item}" \ + --dataset '{"train":[{"name": "chatml_dataset", "data_files": "/root/.paddlemix/datasets/llava_bench_data/llava_train_part.json","chat_template":"/root/.paddlenlp/models/liuhaotian/llava-v1.6-vicuna-7b/chat_template.json"}]}' \ --mixtoken false \ - --output_dir ./work_dirs/${model_item}_benchmark \ + --output_dir ./work_dirs/${model_item}_${train_stage}_benchmark \ --overwrite_output_dir true \ --per_device_train_batch_size ${base_batch_size} \ ${use_fp16_cmd} \ --num_train_epochs ${max_epochs} \ --recompute true \ --gradient_accumulation_steps 1 \ - --sharding stage2 \ + --sharding "stage2" \ --tensor_parallel_degree 1 \ --sharding_parallel_degree 8 \ --learning_rate 2e-04 \ --mm_projector_lr 2e-5 \ --weight_decay 0.0 \ --warmup_ratio 0.03 \ - --lr_scheduler_type cosine \ + --lr_scheduler_type "cosine" \ --logging_steps 1 \ --save_steps 1000 \ - --evaluation_strategy no \ - --save_strategy no \ + --evaluation_strategy "no" \ + --save_strategy "no" \ --max_length 2048 \ --do_eval false \ --disable_tqdm true \ @@ -187,21 +155,18 @@ function _train(){ --lora_rank 128 \ --lora_alpha 256 \ --lora_dropout 0.0 \ - --lora_target_modules [\"llama.layer.*q_proj.*\",\"llama.layer.*k_proj.*\",\"llama.layer.*v_proj.*\",\"llama.layer.*gate_proj.*\",\"llama.layer.*up_proj.*\",\"llama.layer.*down_proj.*\",\"llama.layer.*o_proj.*\"] \ - --tensor_parallel_degree=1 \ - --sharding_parallel_degree=8 \ - --sharding="stage2" \ - --benchmark true + --lora_target_modules '["llama.layer.*q_proj.*", "llama.layer.*k_proj.*", "llama.layer.*v_proj.*", "llama.layer.*gate_proj.*", "llama.layer.*up_proj.*", "llama.layer.*down_proj.*", "llama.layer.*o_proj.*"]' \ + --benchmark True " fi if [ ${train_stage} = "pretrain" ]; then - train_cmd="../paddlemix/examples/llava/pretrain.py \ - --do_train true \ - --model_name_or_path paddlemix/llava/${model_path} \ - --dataset {\"train\":[{\"name\":\"chatml_dataset\",\"data_files\":\"./llava_bench_data/ScienceQA_val_500.json\"}]} \ - --freeze_include [\"*llama*\",\"*lm_head*\"] \ - --freeze_exclude [\"*llama.mm_projector*\"] \ - --output_dir ./work_dirs/${model_item}_benchmark \ + train_cmd="./paddlemix/examples/llava/pretrain.py \ + --do_train \ + --model_name_or_path "paddlemix/llava/${model_item}" \ + --dataset '{"train":[{"name": "chatml_dataset", "data_files": "/root/.paddlemix/datasets/llava_bench_data/llava_train_part.json"}]}' \ + --freeze_include '["*llama*", "*lm_head*"]' \ + --freeze_exclude '["*llama.mm_projector*"]' \ + --output_dir ./work_dirs/${model_item}_${train_stage}_benchmark \ --overwrite_output_dir true \ --per_device_train_batch_size ${base_batch_size} \ ${use_fp16_cmd} \ @@ -212,18 +177,15 @@ function _train(){ --group_by_modality_length false \ --learning_rate 1e-03 \ --warmup_ratio 0.03 \ - --lr_scheduler_type cosine \ + --lr_scheduler_type "cosine" \ --logging_steps 1 \ --save_steps 1000 \ - --evaluation_strategy no \ - --save_strategy no \ + --evaluation_strategy "no" \ + --save_strategy "no" \ --max_length 2048 \ --do_eval false \ --disable_tqdm true \ --save_total_limit 1 \ - --tensor_parallel_degree=1 \ - --sharding_parallel_degree=8 \ - --sharding="stage2" \ --benchmark true " fi @@ -259,7 +221,7 @@ function _train(){ fi } -# source ${BENCHMARK_ROOT}/scripts/run_model.sh # 在该脚本中会对符合benchmark规范的log使用analysis.py 脚本进行性能数据解析;如果不联调只想要产出训练log可以注掉本行,提交时需打开 +source ${BENCHMARK_ROOT}/scripts/run_model.sh # 在该脚本中会对符合benchmark规范的log使用analysis.py 脚本进行性能数据解析;如果不联调只想要产出训练log可以注掉本行,提交时需打开 _set_params $@ -_train # 如果只产出训练log,不解析,可取消注释 -# _run # 该函数在run_model.sh中,执行时会调用_train; 如果不联调只产出训练log可以注掉本行,提交时需打开 \ No newline at end of file +#_train # 如果只产出训练log,不解析,可取消注释 +_run # 该函数在run_model.sh中,执行时会调用_train; 如果不联调只产出训练log可以注掉本行,提交时需打开 \ No newline at end of file