Metadata-Version: 2.1
Name: nvflops
Version: 0.0.1.dev2
Summary: The New Version of the Free-style machine-Learning Open Platform System
Home-page: https://github.com/IsaacYangSLA/nvflops
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: boto3 (==1.21.24)
Requires-Dist: certifi (==2021.10.8)
Requires-Dist: flask (==2.0.3)
Requires-Dist: flask-sqlalchemy (==2.5.1)
Requires-Dist: minio (==7.1.5)
Requires-Dist: requests (==2.27.1)
Requires-Dist: python-dateutil (==2.8.2) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
Requires-Dist: six (==1.16.0) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3"
Requires-Dist: urllib3 (==1.26.9) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3, 3.4" and python_version < "4"
Requires-Dist: sqlalchemy (==1.4.32) ; python_version >= "2.7" and python_version not in "3.0, 3.1, 3.2, 3.3, 3.4, 3.5"
Requires-Dist: charset-normalizer (==2.0.12) ; python_version >= "3"
Requires-Dist: idna (==3.3) ; python_version >= "3"
Requires-Dist: greenlet (==1.1.2) ; python_version >= "3" and platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32")))))
Requires-Dist: botocore (==1.24.24) ; python_version >= "3.6"
Requires-Dist: click (==8.0.4) ; python_version >= "3.6"
Requires-Dist: jinja2 (==3.0.3) ; python_version >= "3.6"
Requires-Dist: s3transfer (==0.5.2) ; python_version >= "3.6"
Requires-Dist: werkzeug (==2.0.3) ; python_version >= "3.6"
Requires-Dist: itsdangerous (==2.1.1) ; python_version >= "3.7"
Requires-Dist: jmespath (==1.0.0) ; python_version >= "3.7"
Requires-Dist: markupsafe (==2.1.1) ; python_version >= "3.7"

# nvflops
The **N**ew **V**ersion of the **F**ree-style machine-**L**earning **O**pen **P**latform **S**ystem

# Key concepts

- All results from participants are recorded with mandatory metadata, such as parents, creator, creator's role.
- Blobs of results (the large binary information) are stored in S3 or other dedicate blob storage space.  Their addresses (bucket and object in S3 use case) are stored in the mandatory metadata.
- Parents and children are many-to-many relationship.  That is, one result can have multiple parents (aggregation operation).  One parents can have multiple results (client's local training).
- Results can include additional metadata (custom_field) as flat dictionary.  Search can perform against those custom_field.

Aggregation style operation as shown in this graph.
![alt text](https://github.com/IsaacYangSLA/nvflops/blob/main/docs/resources/key_concepts.png?raw=true)

# Package requirements
In current implementation, vflops requires a blob storage space and only S3 is supported.  Full S3 authentication with AWS IAM credential will be implemented in the future.  For local development and test, you can install [minio][https://min.io/download#/linux).  Minio Python package is required, but it should be easy to replace it with boto3.

The backend database can be any SQL database supported by SQLAlchemy.  However, you will need to setup your own database management system.

# Installation
We plan to have nvflops wheel package available on [PyPi](https://pypi.org/project/nvflops/).  You can choose to install via source codes.

  ```
  pip install -e .
  ```
  in nvflops folder (same level as setup.py)


