-
Notifications
You must be signed in to change notification settings - Fork 396
Add support for customizing output and uploading it to remote storage (S3 bucket) #71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
And provide a sample script Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Everything looks good to me! Just two minor suggestions about the README.
Thanks for the review |
To clearly state that the contents of the output directory are deleted. Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
|
/merge |
… (S3 bucket) (NVIDIA#71) Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Sample Usage for customizing and uploading: ``` eval: general: output: dir: ./.tmp/aiq/examples/simple_output/ # Whether to cleanup the output directory before running the workflow cleanup: true custom_scripts: convert_workflow_to_csv: script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py kwargs: input: ./.tmp/aiq/examples/simple_output/workflow_output.json output: ./.tmp/aiq/examples/simple_output/workflow.csv # Upload contents of output directory to remote storage using S3 credentials remote_dir: output s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-secret-key dataset: _type: json # Download dataset from remote storage using S3 credentials remote_file_path: input/langsmith.json file_path: ./.tmp/aiq/examples/simple_input/langsmith.json s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-access-key ``` Sample Output: ``` 2025-04-04 09:23:38,412 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json 2025-04-04 09:23:38,542 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple_output/standardized_data_all.csv 2025-04-04 09:23:38,819 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple_output/inference_optimization.json███████████████████████████████████████████████████████████| 3/3 [00:07<00:00, 2.04s/it] 2025-04-04 09:23:39,825 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-04-04 09:23:39,864 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-04-04 09:23:39,865 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple_output/workflow_profiling_report.txt 2025-04-04 09:23:39,866 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json 2025-04-04 09:23:39,870 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple_output/workflow_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_relevance_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_groundedness_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.utils.output_uploader - INFO - Running custom script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py examples/simple/src/aiq_simple/scripts/workflow_to_csv.py --input ./.tmp/aiq/examples/simple_output/workflow_output.json --output ./.tmp/aiq/examples/simple_output/workflow.csv ✅ Converted workflow_output.json to workflow.csv 2025-04-04 09:23:39,922 - aiq.eval.utils.output_uploader - INFO - Custom script examples/simple/src/aiq_simple/scripts/workflow_to_csv.py completed successfully. Uploading files to S3: 0%| | 0/12 [00:00<?, ?it/s]2025-04-04 09:23:40,492 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/inference_optimization.json to s3://aiq-simple-bucket/output/inference_optimization.json Uploading files to S3: 8%|████████████████ | 1/12 [00:00<00:02, 3.94it/s]2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json to s3://aiq-simple-bucket/output/workflow_profiling_metrics.json 2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow.csv to s3://aiq-simple-bucket/output/workflow.csv 2025-04-04 09:23:40,520 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_report.txt to s3://aiq-simple-bucket/output/workflow_profiling_report.txt 2025-04-04 09:23:40,600 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json to s3://aiq-simple-bucket/output/trajectory_accuracy_output.json Uploading files to S3: 42%|████████████████████████████████████████████████████████████████████████████████▍ | 5/12 [00:00<00:00, 16.44it/s]2025-04-04 09:23:40,614 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_accuracy_output.json to s3://aiq-simple-bucket/output/rag_accuracy_output.json 2025-04-04 09:23:40,627 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_groundedness_output.json to s3://aiq-simple-bucket/output/rag_groundedness_output.json 2025-04-04 09:23:40,867 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_relevance_output.json to s3://aiq-simple-bucket/output/rag_relevance_output.json Uploading files to S3: 67%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 8/12 [00:00<00:00, 13.45it/s]2025-04-04 09:23:40,882 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/gantt_chart.png to s3://aiq-simple-bucket/output/gantt_chart.png 2025-04-04 09:23:40,885 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/standardized_data_all.csv to s3://aiq-simple-bucket/output/standardized_data_all.csv 2025-04-04 09:23:40,909 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_output.json to s3://aiq-simple-bucket/output/workflow_output.json 2025-04-04 09:23:42,068 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json to s3://aiq-simple-bucket/output/all_requests_profiler_traces.json Uploading files to S3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:01<00:00, 6.55it/s] ``` Closes NVIDIA#65, NVIDIA#66 ## By Submitting this PR I confirm: - I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/AgentIQ/blob/develop/docs/source/advanced/contributing.md). - We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - Any contribution which contains commits that are not Signed-Off will not be accepted. - When the PR is ready for review, new or existing tests cover these changes. - When the PR is ready for review, the documentation is up to date with these changes. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Dhruv Nandakumar (https://github.com/dnandakumar-nv) URL: NVIDIA#71
… (S3 bucket) (NVIDIA#71) Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Sample Usage for customizing and uploading: ``` eval: general: output: dir: ./.tmp/aiq/examples/simple_output/ # Whether to cleanup the output directory before running the workflow cleanup: true custom_scripts: convert_workflow_to_csv: script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py kwargs: input: ./.tmp/aiq/examples/simple_output/workflow_output.json output: ./.tmp/aiq/examples/simple_output/workflow.csv # Upload contents of output directory to remote storage using S3 credentials remote_dir: output s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-secret-key dataset: _type: json # Download dataset from remote storage using S3 credentials remote_file_path: input/langsmith.json file_path: ./.tmp/aiq/examples/simple_input/langsmith.json s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-access-key ``` Sample Output: ``` 2025-04-04 09:23:38,412 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json 2025-04-04 09:23:38,542 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple_output/standardized_data_all.csv 2025-04-04 09:23:38,819 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple_output/inference_optimization.json███████████████████████████████████████████████████████████| 3/3 [00:07<00:00, 2.04s/it] 2025-04-04 09:23:39,825 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-04-04 09:23:39,864 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-04-04 09:23:39,865 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple_output/workflow_profiling_report.txt 2025-04-04 09:23:39,866 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json 2025-04-04 09:23:39,870 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple_output/workflow_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_relevance_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_groundedness_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.utils.output_uploader - INFO - Running custom script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py examples/simple/src/aiq_simple/scripts/workflow_to_csv.py --input ./.tmp/aiq/examples/simple_output/workflow_output.json --output ./.tmp/aiq/examples/simple_output/workflow.csv ✅ Converted workflow_output.json to workflow.csv 2025-04-04 09:23:39,922 - aiq.eval.utils.output_uploader - INFO - Custom script examples/simple/src/aiq_simple/scripts/workflow_to_csv.py completed successfully. Uploading files to S3: 0%| | 0/12 [00:00<?, ?it/s]2025-04-04 09:23:40,492 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/inference_optimization.json to s3://aiq-simple-bucket/output/inference_optimization.json Uploading files to S3: 8%|████████████████ | 1/12 [00:00<00:02, 3.94it/s]2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json to s3://aiq-simple-bucket/output/workflow_profiling_metrics.json 2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow.csv to s3://aiq-simple-bucket/output/workflow.csv 2025-04-04 09:23:40,520 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_report.txt to s3://aiq-simple-bucket/output/workflow_profiling_report.txt 2025-04-04 09:23:40,600 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json to s3://aiq-simple-bucket/output/trajectory_accuracy_output.json Uploading files to S3: 42%|████████████████████████████████████████████████████████████████████████████████▍ | 5/12 [00:00<00:00, 16.44it/s]2025-04-04 09:23:40,614 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_accuracy_output.json to s3://aiq-simple-bucket/output/rag_accuracy_output.json 2025-04-04 09:23:40,627 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_groundedness_output.json to s3://aiq-simple-bucket/output/rag_groundedness_output.json 2025-04-04 09:23:40,867 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_relevance_output.json to s3://aiq-simple-bucket/output/rag_relevance_output.json Uploading files to S3: 67%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 8/12 [00:00<00:00, 13.45it/s]2025-04-04 09:23:40,882 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/gantt_chart.png to s3://aiq-simple-bucket/output/gantt_chart.png 2025-04-04 09:23:40,885 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/standardized_data_all.csv to s3://aiq-simple-bucket/output/standardized_data_all.csv 2025-04-04 09:23:40,909 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_output.json to s3://aiq-simple-bucket/output/workflow_output.json 2025-04-04 09:23:42,068 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json to s3://aiq-simple-bucket/output/all_requests_profiler_traces.json Uploading files to S3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:01<00:00, 6.55it/s] ``` Closes NVIDIA#65, NVIDIA#66 ## By Submitting this PR I confirm: - I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/AgentIQ/blob/develop/docs/source/advanced/contributing.md). - We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - Any contribution which contains commits that are not Signed-Off will not be accepted. - When the PR is ready for review, new or existing tests cover these changes. - When the PR is ready for review, the documentation is up to date with these changes. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Dhruv Nandakumar (https://github.com/dnandakumar-nv) URL: NVIDIA#71 Signed-off-by: Yuchen Zhang <134643420+yczhang-nv@users.noreply.github.com>
… (S3 bucket) (NVIDIA#71) Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Sample Usage for customizing and uploading: ``` eval: general: output: dir: ./.tmp/aiq/examples/simple_output/ # Whether to cleanup the output directory before running the workflow cleanup: true custom_scripts: convert_workflow_to_csv: script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py kwargs: input: ./.tmp/aiq/examples/simple_output/workflow_output.json output: ./.tmp/aiq/examples/simple_output/workflow.csv # Upload contents of output directory to remote storage using S3 credentials remote_dir: output s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-secret-key dataset: _type: json # Download dataset from remote storage using S3 credentials remote_file_path: input/langsmith.json file_path: ./.tmp/aiq/examples/simple_input/langsmith.json s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-access-key ``` Sample Output: ``` 2025-04-04 09:23:38,412 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json 2025-04-04 09:23:38,542 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple_output/standardized_data_all.csv 2025-04-04 09:23:38,819 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple_output/inference_optimization.json███████████████████████████████████████████████████████████| 3/3 [00:07<00:00, 2.04s/it] 2025-04-04 09:23:39,825 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-04-04 09:23:39,864 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-04-04 09:23:39,865 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple_output/workflow_profiling_report.txt 2025-04-04 09:23:39,866 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json 2025-04-04 09:23:39,870 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple_output/workflow_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_relevance_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_groundedness_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.utils.output_uploader - INFO - Running custom script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py examples/simple/src/aiq_simple/scripts/workflow_to_csv.py --input ./.tmp/aiq/examples/simple_output/workflow_output.json --output ./.tmp/aiq/examples/simple_output/workflow.csv ✅ Converted workflow_output.json to workflow.csv 2025-04-04 09:23:39,922 - aiq.eval.utils.output_uploader - INFO - Custom script examples/simple/src/aiq_simple/scripts/workflow_to_csv.py completed successfully. Uploading files to S3: 0%| | 0/12 [00:00<?, ?it/s]2025-04-04 09:23:40,492 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/inference_optimization.json to s3://aiq-simple-bucket/output/inference_optimization.json Uploading files to S3: 8%|████████████████ | 1/12 [00:00<00:02, 3.94it/s]2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json to s3://aiq-simple-bucket/output/workflow_profiling_metrics.json 2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow.csv to s3://aiq-simple-bucket/output/workflow.csv 2025-04-04 09:23:40,520 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_report.txt to s3://aiq-simple-bucket/output/workflow_profiling_report.txt 2025-04-04 09:23:40,600 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json to s3://aiq-simple-bucket/output/trajectory_accuracy_output.json Uploading files to S3: 42%|████████████████████████████████████████████████████████████████████████████████▍ | 5/12 [00:00<00:00, 16.44it/s]2025-04-04 09:23:40,614 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_accuracy_output.json to s3://aiq-simple-bucket/output/rag_accuracy_output.json 2025-04-04 09:23:40,627 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_groundedness_output.json to s3://aiq-simple-bucket/output/rag_groundedness_output.json 2025-04-04 09:23:40,867 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_relevance_output.json to s3://aiq-simple-bucket/output/rag_relevance_output.json Uploading files to S3: 67%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 8/12 [00:00<00:00, 13.45it/s]2025-04-04 09:23:40,882 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/gantt_chart.png to s3://aiq-simple-bucket/output/gantt_chart.png 2025-04-04 09:23:40,885 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/standardized_data_all.csv to s3://aiq-simple-bucket/output/standardized_data_all.csv 2025-04-04 09:23:40,909 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_output.json to s3://aiq-simple-bucket/output/workflow_output.json 2025-04-04 09:23:42,068 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json to s3://aiq-simple-bucket/output/all_requests_profiler_traces.json Uploading files to S3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:01<00:00, 6.55it/s] ``` Closes NVIDIA#65, NVIDIA#66 ## By Submitting this PR I confirm: - I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/AgentIQ/blob/develop/docs/source/advanced/contributing.md). - We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - Any contribution which contains commits that are not Signed-Off will not be accepted. - When the PR is ready for review, new or existing tests cover these changes. - When the PR is ready for review, the documentation is up to date with these changes. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Dhruv Nandakumar (https://github.com/dnandakumar-nv) URL: NVIDIA#71 Signed-off-by: Yuchen Zhang <134643420+yczhang-nv@users.noreply.github.com>
… (S3 bucket) (NVIDIA#71) Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Sample Usage for customizing and uploading: ``` eval: general: output: dir: ./.tmp/aiq/examples/simple_output/ # Whether to cleanup the output directory before running the workflow cleanup: true custom_scripts: convert_workflow_to_csv: script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py kwargs: input: ./.tmp/aiq/examples/simple_output/workflow_output.json output: ./.tmp/aiq/examples/simple_output/workflow.csv # Upload contents of output directory to remote storage using S3 credentials remote_dir: output s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-secret-key dataset: _type: json # Download dataset from remote storage using S3 credentials remote_file_path: input/langsmith.json file_path: ./.tmp/aiq/examples/simple_input/langsmith.json s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-access-key ``` Sample Output: ``` 2025-04-04 09:23:38,412 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json 2025-04-04 09:23:38,542 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple_output/standardized_data_all.csv 2025-04-04 09:23:38,819 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple_output/inference_optimization.json███████████████████████████████████████████████████████████| 3/3 [00:07<00:00, 2.04s/it] 2025-04-04 09:23:39,825 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-04-04 09:23:39,864 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-04-04 09:23:39,865 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple_output/workflow_profiling_report.txt 2025-04-04 09:23:39,866 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json 2025-04-04 09:23:39,870 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple_output/workflow_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_relevance_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_groundedness_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.utils.output_uploader - INFO - Running custom script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py examples/simple/src/aiq_simple/scripts/workflow_to_csv.py --input ./.tmp/aiq/examples/simple_output/workflow_output.json --output ./.tmp/aiq/examples/simple_output/workflow.csv ✅ Converted workflow_output.json to workflow.csv 2025-04-04 09:23:39,922 - aiq.eval.utils.output_uploader - INFO - Custom script examples/simple/src/aiq_simple/scripts/workflow_to_csv.py completed successfully. Uploading files to S3: 0%| | 0/12 [00:00<?, ?it/s]2025-04-04 09:23:40,492 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/inference_optimization.json to s3://aiq-simple-bucket/output/inference_optimization.json Uploading files to S3: 8%|████████████████ | 1/12 [00:00<00:02, 3.94it/s]2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json to s3://aiq-simple-bucket/output/workflow_profiling_metrics.json 2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow.csv to s3://aiq-simple-bucket/output/workflow.csv 2025-04-04 09:23:40,520 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_report.txt to s3://aiq-simple-bucket/output/workflow_profiling_report.txt 2025-04-04 09:23:40,600 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json to s3://aiq-simple-bucket/output/trajectory_accuracy_output.json Uploading files to S3: 42%|████████████████████████████████████████████████████████████████████████████████▍ | 5/12 [00:00<00:00, 16.44it/s]2025-04-04 09:23:40,614 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_accuracy_output.json to s3://aiq-simple-bucket/output/rag_accuracy_output.json 2025-04-04 09:23:40,627 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_groundedness_output.json to s3://aiq-simple-bucket/output/rag_groundedness_output.json 2025-04-04 09:23:40,867 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_relevance_output.json to s3://aiq-simple-bucket/output/rag_relevance_output.json Uploading files to S3: 67%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 8/12 [00:00<00:00, 13.45it/s]2025-04-04 09:23:40,882 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/gantt_chart.png to s3://aiq-simple-bucket/output/gantt_chart.png 2025-04-04 09:23:40,885 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/standardized_data_all.csv to s3://aiq-simple-bucket/output/standardized_data_all.csv 2025-04-04 09:23:40,909 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_output.json to s3://aiq-simple-bucket/output/workflow_output.json 2025-04-04 09:23:42,068 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json to s3://aiq-simple-bucket/output/all_requests_profiler_traces.json Uploading files to S3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:01<00:00, 6.55it/s] ``` Closes NVIDIA#65, NVIDIA#66 ## By Submitting this PR I confirm: - I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/AgentIQ/blob/develop/docs/source/advanced/contributing.md). - We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - Any contribution which contains commits that are not Signed-Off will not be accepted. - When the PR is ready for review, new or existing tests cover these changes. - When the PR is ready for review, the documentation is up to date with these changes. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Dhruv Nandakumar (https://github.com/dnandakumar-nv) URL: NVIDIA#71
… (S3 bucket) (NVIDIA#71) Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials. Sample Usage for customizing and uploading: ``` eval: general: output: dir: ./.tmp/aiq/examples/simple_output/ # Whether to cleanup the output directory before running the workflow cleanup: true custom_scripts: convert_workflow_to_csv: script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py kwargs: input: ./.tmp/aiq/examples/simple_output/workflow_output.json output: ./.tmp/aiq/examples/simple_output/workflow.csv # Upload contents of output directory to remote storage using S3 credentials remote_dir: output s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-secret-key dataset: _type: json # Download dataset from remote storage using S3 credentials remote_file_path: input/langsmith.json file_path: ./.tmp/aiq/examples/simple_input/langsmith.json s3: endpoint_url: http://10.185.X.X:9000 bucket: aiq-simple-bucket access_key: fake-access-key secret_key: fake-access-key ``` Sample Output: ``` 2025-04-04 09:23:38,412 - aiq.profiler.profile_runner - INFO - Wrote combined data to: .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json 2025-04-04 09:23:38,542 - aiq.profiler.profile_runner - INFO - Wrote merged standardized DataFrame to .tmp/aiq/examples/simple_output/standardized_data_all.csv 2025-04-04 09:23:38,819 - aiq.profiler.profile_runner - INFO - Wrote inference optimization results to: .tmp/aiq/examples/simple_output/inference_optimization.json███████████████████████████████████████████████████████████| 3/3 [00:07<00:00, 2.04s/it] 2025-04-04 09:23:39,825 - aiq.profiler.profile_runner - INFO - Nested stack analysis complete 2025-04-04 09:23:39,864 - aiq.profiler.profile_runner - INFO - Concurrency spike analysis complete 2025-04-04 09:23:39,865 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling report to: .tmp/aiq/examples/simple_output/workflow_profiling_report.txt 2025-04-04 09:23:39,866 - aiq.profiler.profile_runner - INFO - Wrote workflow profiling metrics to: .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json 2025-04-04 09:23:39,870 - aiq.eval.evaluate - INFO - Workflow output written to .tmp/aiq/examples/simple_output/workflow_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_relevance_output.json 2025-04-04 09:23:39,871 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_groundedness_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/rag_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.evaluate - INFO - Evaluation results written to .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json 2025-04-04 09:23:39,872 - aiq.eval.utils.output_uploader - INFO - Running custom script: examples/simple/src/aiq_simple/scripts/workflow_to_csv.py examples/simple/src/aiq_simple/scripts/workflow_to_csv.py --input ./.tmp/aiq/examples/simple_output/workflow_output.json --output ./.tmp/aiq/examples/simple_output/workflow.csv ✅ Converted workflow_output.json to workflow.csv 2025-04-04 09:23:39,922 - aiq.eval.utils.output_uploader - INFO - Custom script examples/simple/src/aiq_simple/scripts/workflow_to_csv.py completed successfully. Uploading files to S3: 0%| | 0/12 [00:00<?, ?it/s]2025-04-04 09:23:40,492 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/inference_optimization.json to s3://aiq-simple-bucket/output/inference_optimization.json Uploading files to S3: 8%|████████████████ | 1/12 [00:00<00:02, 3.94it/s]2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_metrics.json to s3://aiq-simple-bucket/output/workflow_profiling_metrics.json 2025-04-04 09:23:40,518 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow.csv to s3://aiq-simple-bucket/output/workflow.csv 2025-04-04 09:23:40,520 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_profiling_report.txt to s3://aiq-simple-bucket/output/workflow_profiling_report.txt 2025-04-04 09:23:40,600 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/trajectory_accuracy_output.json to s3://aiq-simple-bucket/output/trajectory_accuracy_output.json Uploading files to S3: 42%|████████████████████████████████████████████████████████████████████████████████▍ | 5/12 [00:00<00:00, 16.44it/s]2025-04-04 09:23:40,614 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_accuracy_output.json to s3://aiq-simple-bucket/output/rag_accuracy_output.json 2025-04-04 09:23:40,627 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_groundedness_output.json to s3://aiq-simple-bucket/output/rag_groundedness_output.json 2025-04-04 09:23:40,867 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/rag_relevance_output.json to s3://aiq-simple-bucket/output/rag_relevance_output.json Uploading files to S3: 67%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 8/12 [00:00<00:00, 13.45it/s]2025-04-04 09:23:40,882 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/gantt_chart.png to s3://aiq-simple-bucket/output/gantt_chart.png 2025-04-04 09:23:40,885 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/standardized_data_all.csv to s3://aiq-simple-bucket/output/standardized_data_all.csv 2025-04-04 09:23:40,909 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/workflow_output.json to s3://aiq-simple-bucket/output/workflow_output.json 2025-04-04 09:23:42,068 - aiq.eval.utils.output_uploader - INFO - Uploaded .tmp/aiq/examples/simple_output/all_requests_profiler_traces.json to s3://aiq-simple-bucket/output/all_requests_profiler_traces.json Uploading files to S3: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:01<00:00, 6.55it/s] ``` Closes NVIDIA#65, NVIDIA#66 ## By Submitting this PR I confirm: - I am familiar with the [Contributing Guidelines](https://github.com/NVIDIA/AgentIQ/blob/develop/docs/source/advanced/contributing.md). - We require that all contributors "sign-off" on their commits. This certifies that the contribution is your original work, or you have rights to submit it under the same license, or a compatible license. - Any contribution which contains commits that are not Signed-Off will not be accepted. - When the PR is ready for review, new or existing tests cover these changes. - When the PR is ready for review, the documentation is up to date with these changes. Authors: - Anuradha Karuppiah (https://github.com/AnuradhaKaruppiah) Approvers: - Dhruv Nandakumar (https://github.com/dnandakumar-nv) URL: NVIDIA#71
Description
Workflow, profiling and evaluation results can be customized and uploaded using S3 credentials.
Sample Usage for customizing and uploading:
Sample Output:
Closes #65, #66
By Submitting this PR I confirm: