UNPKG

federer

Version:

Experiments in asynchronous federated learning and decentralized learning

153 lines (152 loc) 6.54 kB
{ "name": "federer", "version": "0.0.0", "description": "Experiments in asynchronous federated learning and decentralized learning", "files": [ "/dist/src", "!/dist/**/*.tsbuildinfo" ], "scripts": { "setup:aws": "ts-node --files scripts/k8s/aws/setup-aws.ts", "setup:git": "git secrets --install && git secrets --register-aws", "build": "tsc --build", "build:docker": "docker build -t federer .", "build:k8s:aws": "ts-node --files scripts/k8s/aws/build-k8s-config.ts", "build:k8s:local": "ts-node --files scripts/k8s/local/build-k8s-config.ts", "build:local": "npm-run-all build:docker clean:minikube load:minikube", "build:aws": "npm-run-all build:docker load:aws", "load:minikube": "minikube image load federer", "load:aws": "ts-node --files scripts/k8s/aws/upload-ecr.ts", "list:aws": "ts-node --files scripts/k8s/aws/list-resources.ts", "get:tensorboard-url": "echo http://$(kubectl get svc tensorboard -o jsonpath='{.status.loadBalancer.ingress[*].ip}')$(kubectl get svc tensorboard -o jsonpath='{.status.loadBalancer.ingress[*].hostname}'):80", "clean": "rimraf dist", "clean:all": "npm-run-all --parallel clean clean:website clean:minikube", "clean:website": "npm run clean --prefix website", "clean:data": "rimraf data leaf/data/{celeba,femnist,reddit,sent140,shakespeare,synthetic}/meta", "clean:minikube": "minikube image rm image federer", "test": "npm-run-all --parallel build test:lint test:format --sequential test:package test:unit", "test:lint": "eslint --ext .ts .", "test:format": "prettier --check .", "test:package": "pkg-ok", "test:unit": "npm-run-all build test:unit:run", "test:unit:run": "mocha", "fix": "npm-run-all fix:lint fix:format", "fix:lint": "eslint --ext .ts --fix .", "fix:format": "prettier --write .", "start:tensorboard": "tensorboard --logdir=results", "start:website": "npm-run-all build start:website:run", "start:website:run": "npm run start --prefix website", "start:minikube": "ts-node scripts/k8s/local/start-minikube.ts", "stop:minikube": "minikube stop", "start:aws": "ts-node --files scripts/k8s/aws/start-cluster.ts", "stop:aws": "ts-node --files scripts/k8s/aws/stop-cluster.ts", "deploy:mnist:local": "ts-node --files scripts/k8s/local/deploy-k8s.ts mnist local", "deploy:leaf:local": "ts-node --files scripts/k8s/local/deploy-k8s.ts leaf local", "deploy:mnist:aws": "ts-node --files scripts/k8s/aws/deploy-k8s.ts mnist aws", "deploy:leaf:aws": "ts-node --files scripts/k8s/aws/deploy-k8s.ts leaf aws", "down": "kubectl delete --all deployments,services,pvc,pv,configmaps", "data": "npm-run-all --parallel data:**", "data:mnist": "node -r dotenv/config dist/src/experiments/mnist/coordinator/scripts/download-data.js", "data:leaf:models": "python3.7 scripts/leaf-import/import_model.py", "data:celeba": "python3.7 scripts/leaf-import/import_data.py -d celeba", "data:shakespeare": "python3.7 scripts/leaf-import/import_data.py -d shakespeare", "data:synthetic": "python3.7 scripts/leaf-import/import_data.py -d synthetic", "data:sent140": "python3.7 scripts/leaf-import/import_data.py -d sent140", "data:femnist": "python3.7 scripts/leaf-import/import_data.py -d femnist", "upload:mnist:aws": "ts-node --files scripts/k8s/aws/upload-data.ts data/raw/mnist data/raw/fashion-mnist", "upload:synthetic:aws": "ts-node --files scripts/k8s/aws/upload-data.ts data/raw/leaf/synthetic/test data/raw/leaf/synthetic/train", "upload:shakespeare:aws": "ts-node --files scripts/k8s/aws/upload-data.ts data/raw/leaf/shakespeare/test data/raw/leaf/shakespeare/train", "experiment:mnist": "node -r dotenv/config dist/src/experiments/mnist/coordinator/index.js", "experiment:leaf": "node -r dotenv/config dist/src/experiments/leaf/coordinator/index.js", "docs": "npm run build --prefix website", "preversion": "npm-run-all clean build test", "postversion": "git push && git push --tags" }, "repository": { "type": "git", "url": "git+https://github.com/MaximeKjaer/federer.git" }, "keywords": [ "tensorflow", "machine-learning", "federated-learning", "distributed-learning", "decentralized-learning", "fedavg", "fedasync" ], "author": "Maxime Kjaer <maxime.kjaer@gmail.com>", "license": "MIT", "bugs": { "url": "https://github.com/MaximeKjaer/federer/issues" }, "homepage": "https://github.com/MaximeKjaer/federer#readme", "publishConfig": { "access": "public" }, "devDependencies": { "@aws-sdk/client-cloudformation": "^3.23.0", "@aws-sdk/client-ec2": "^3.23.0", "@aws-sdk/client-ecr": "^3.23.0", "@aws-sdk/client-eks": "^3.23.0", "@aws-sdk/client-iam": "^3.23.0", "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.4", "@types/mocha": "^8.2.0", "@types/node": "^15.0.3", "@types/node-fetch": "^2.5.8", "@types/node-gzip": "^1.1.0", "@types/reservoir": "^0.1.0", "@types/seedrandom": "^2.4.27", "@types/shelljs": "^0.8.9", "@types/shuffle-seed": "^1.1.0", "@types/yargs": "^17.0.0", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "dotenv-expand": "^5.1.0", "envsub": "^4.0.7", "eslint": "^7.26.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.22.1", "mkdirp": "^0.5.5", "mocha": "^8.3.0", "npm-run-all": "^4.1.5", "pkg-ok": "^2.3.1", "prettier": "^2.3.2", "rimraf": "^3.0.2", "shelljs": "^0.8.4", "spinnies": "^0.5.1", "strict-event-emitter-types": "^2.0.0", "ts-node": "^10.0.0", "typescript": "^4.3.5" }, "dependencies": { "@aws-sdk/client-s3": "^3.23.0", "@jorgeferrero/stream-to-buffer": "^2.0.6", "@tensorflow/tfjs-node": "^3.8.0", "app-root-path": "^3.0.0", "await-lock": "^2.1.0", "chalk": "^2.4.2", "combinate": "^1.1.3", "comlink": "^4.3.1", "dotenv": "^9.0.2", "nanoevents": "^5.1.11", "node-fetch": "^2.6.1", "node-gzip": "^1.1.2", "reservoir": "^0.1.2", "seedrandom": "^2.4.4", "shuffle-seed": "^1.1.6", "socket.io": "^4.1.1", "socket.io-client": "^4.1.1", "tfjs-npy-node": "^0.4.0", "tslib": "^2.2.0", "winston": "^3.3.3", "yargs": "^17.0.1" }, "engines": { "node": ">=15.12.0" } }