federer
Version:
Experiments in asynchronous federated learning and decentralized learning
153 lines (152 loc) • 6.54 kB
JSON
{
"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"
}
}