aiverify-foundation / aiverify

AI Verify
https://aiverify-foundation.github.io/aiverify/
Apache License 2.0
123 stars 34 forks source link

adding pytorch support #372

Open iamksuresh opened 1 week ago

iamksuresh commented 1 week ago

Description

Implement support for pytorch models

Type of Change

feat: A new feature

test: Adding or modifying tests

How to Test

Execute the following cmd - cd /aiverify/aiverify-test-engine pytest .

Checklist

Please check all the boxes that apply to this pull request using "x":

Screenshots (if applicable)

[If the changes involve visual modifications, include screenshots or GIFs that demonstrate the changes.]

Additional Notes

For Developers

Pytorch

-  Runs on cpu 
-  It is set to run on single thread. (torch.set_num_threads(1)) Multithread causes segmentation error.

Data set requirements

- Currently it expects data_sets and ground_truth data in csv format (tabular data)
- Prediction are returned as numpy array.

Pytorch models

- sequential models are supported
- Supported algorithms - "torch.nn.Sequential", "torch.nn.modules.container.Sequential"
- TorchScript models are not supported

Reference to sample model : 

- https://github.com/aiverify-foundation/aiverify/pull/372/files#diff-866d7b2a643d28c53cf14e124d056e2a64e326ac8e241ef076b79f0e9460466dR90
- model path :  aiverify-test-engine/tests/io/user_defined_files/sample_pytorch_model.pth
Developer Certificate of Origin ``` Developer Certificate of Origin Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ```