@epfml/discojs-node 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -0
- package/dist/core/async_buffer.d.ts +41 -0
- package/dist/core/async_buffer.js +97 -0
- package/dist/core/async_informant.d.ts +20 -0
- package/dist/core/async_informant.js +69 -0
- package/dist/core/client/base.d.ts +33 -0
- package/dist/core/client/base.js +35 -0
- package/dist/core/client/decentralized/base.d.ts +32 -0
- package/dist/core/client/decentralized/base.js +212 -0
- package/dist/core/client/decentralized/clear_text.d.ts +14 -0
- package/dist/core/client/decentralized/clear_text.js +96 -0
- package/dist/core/client/decentralized/index.d.ts +4 -0
- package/dist/core/client/decentralized/index.js +9 -0
- package/dist/core/client/decentralized/messages.d.ts +41 -0
- package/dist/core/client/decentralized/messages.js +54 -0
- package/dist/core/client/decentralized/peer.d.ts +26 -0
- package/dist/core/client/decentralized/peer.js +210 -0
- package/dist/core/client/decentralized/peer_pool.d.ts +14 -0
- package/dist/core/client/decentralized/peer_pool.js +92 -0
- package/dist/core/client/decentralized/sec_agg.d.ts +22 -0
- package/dist/core/client/decentralized/sec_agg.js +190 -0
- package/dist/core/client/decentralized/secret_shares.d.ts +3 -0
- package/dist/core/client/decentralized/secret_shares.js +39 -0
- package/dist/core/client/decentralized/types.d.ts +2 -0
- package/dist/core/client/decentralized/types.js +7 -0
- package/dist/core/client/event_connection.d.ts +37 -0
- package/dist/core/client/event_connection.js +158 -0
- package/dist/core/client/federated/client.d.ts +37 -0
- package/dist/core/client/federated/client.js +273 -0
- package/dist/core/client/federated/index.d.ts +2 -0
- package/dist/core/client/federated/index.js +7 -0
- package/dist/core/client/federated/messages.d.ts +38 -0
- package/dist/core/client/federated/messages.js +25 -0
- package/dist/core/client/index.d.ts +5 -0
- package/dist/core/client/index.js +11 -0
- package/dist/core/client/local.d.ts +8 -0
- package/dist/core/client/local.js +36 -0
- package/dist/core/client/messages.d.ts +28 -0
- package/dist/core/client/messages.js +33 -0
- package/dist/core/client/utils.d.ts +2 -0
- package/dist/core/client/utils.js +19 -0
- package/dist/core/dataset/data/data.d.ts +11 -0
- package/dist/core/dataset/data/data.js +20 -0
- package/dist/core/dataset/data/data_split.d.ts +5 -0
- package/dist/core/dataset/data/data_split.js +2 -0
- package/dist/core/dataset/data/image_data.d.ts +8 -0
- package/dist/core/dataset/data/image_data.js +64 -0
- package/dist/core/dataset/data/index.d.ts +5 -0
- package/dist/core/dataset/data/index.js +11 -0
- package/dist/core/dataset/data/preprocessing.d.ts +13 -0
- package/dist/core/dataset/data/preprocessing.js +33 -0
- package/dist/core/dataset/data/tabular_data.d.ts +8 -0
- package/dist/core/dataset/data/tabular_data.js +40 -0
- package/dist/core/dataset/data_loader/data_loader.d.ts +15 -0
- package/dist/core/dataset/data_loader/data_loader.js +10 -0
- package/dist/core/dataset/data_loader/image_loader.d.ts +17 -0
- package/dist/core/dataset/data_loader/image_loader.js +141 -0
- package/dist/core/dataset/data_loader/index.d.ts +3 -0
- package/dist/core/dataset/data_loader/index.js +9 -0
- package/dist/core/dataset/data_loader/tabular_loader.d.ts +29 -0
- package/dist/core/dataset/data_loader/tabular_loader.js +101 -0
- package/dist/core/dataset/dataset.d.ts +2 -0
- package/dist/core/dataset/dataset.js +2 -0
- package/dist/core/dataset/dataset_builder.d.ts +18 -0
- package/dist/core/dataset/dataset_builder.js +96 -0
- package/dist/core/dataset/index.d.ts +4 -0
- package/dist/core/dataset/index.js +14 -0
- package/dist/core/index.d.ts +18 -0
- package/dist/core/index.js +41 -0
- package/dist/core/informant/graph_informant.d.ts +10 -0
- package/dist/core/informant/graph_informant.js +23 -0
- package/dist/core/informant/index.d.ts +3 -0
- package/dist/core/informant/index.js +9 -0
- package/dist/core/informant/training_informant/base.d.ts +31 -0
- package/dist/core/informant/training_informant/base.js +83 -0
- package/dist/core/informant/training_informant/decentralized.d.ts +5 -0
- package/dist/core/informant/training_informant/decentralized.js +22 -0
- package/dist/core/informant/training_informant/federated.d.ts +14 -0
- package/dist/core/informant/training_informant/federated.js +32 -0
- package/dist/core/informant/training_informant/index.d.ts +4 -0
- package/dist/core/informant/training_informant/index.js +11 -0
- package/dist/core/informant/training_informant/local.d.ts +6 -0
- package/dist/core/informant/training_informant/local.js +20 -0
- package/dist/core/logging/console_logger.d.ts +18 -0
- package/dist/core/logging/console_logger.js +33 -0
- package/dist/core/logging/index.d.ts +3 -0
- package/dist/core/logging/index.js +9 -0
- package/dist/core/logging/logger.d.ts +12 -0
- package/dist/core/logging/logger.js +9 -0
- package/dist/core/logging/trainer_logger.d.ts +24 -0
- package/dist/core/logging/trainer_logger.js +59 -0
- package/dist/core/memory/base.d.ts +22 -0
- package/dist/core/memory/base.js +9 -0
- package/dist/core/memory/empty.d.ts +14 -0
- package/dist/core/memory/empty.js +75 -0
- package/dist/core/memory/index.d.ts +3 -0
- package/dist/core/memory/index.js +9 -0
- package/dist/core/memory/model_type.d.ts +4 -0
- package/dist/core/memory/model_type.js +9 -0
- package/dist/core/privacy.d.ts +11 -0
- package/dist/core/privacy.js +47 -0
- package/dist/core/serialization/index.d.ts +2 -0
- package/dist/core/serialization/index.js +6 -0
- package/dist/core/serialization/model.d.ts +5 -0
- package/dist/core/serialization/model.js +55 -0
- package/dist/core/serialization/weights.d.ts +5 -0
- package/dist/core/serialization/weights.js +64 -0
- package/dist/core/task/data_example.d.ts +5 -0
- package/dist/core/task/data_example.js +24 -0
- package/dist/core/task/display_information.d.ts +15 -0
- package/dist/core/task/display_information.js +49 -0
- package/dist/core/task/index.d.ts +3 -0
- package/dist/core/task/index.js +8 -0
- package/dist/core/task/model_compile_data.d.ts +6 -0
- package/dist/core/task/model_compile_data.js +22 -0
- package/dist/core/task/summary.d.ts +5 -0
- package/dist/core/task/summary.js +19 -0
- package/dist/core/task/task.d.ts +10 -0
- package/dist/core/task/task.js +31 -0
- package/dist/core/task/training_information.d.ts +28 -0
- package/dist/core/task/training_information.js +66 -0
- package/dist/core/tasks/cifar10.d.ts +3 -0
- package/dist/core/tasks/cifar10.js +65 -0
- package/dist/core/tasks/geotags.d.ts +3 -0
- package/dist/core/tasks/geotags.js +67 -0
- package/dist/core/tasks/index.d.ts +6 -0
- package/dist/core/tasks/index.js +10 -0
- package/dist/core/tasks/lus_covid.d.ts +3 -0
- package/dist/core/tasks/lus_covid.js +87 -0
- package/dist/core/tasks/mnist.d.ts +3 -0
- package/dist/core/tasks/mnist.js +60 -0
- package/dist/core/tasks/simple_face.d.ts +2 -0
- package/dist/core/tasks/simple_face.js +41 -0
- package/dist/core/tasks/titanic.d.ts +3 -0
- package/dist/core/tasks/titanic.js +88 -0
- package/dist/core/training/disco.d.ts +23 -0
- package/dist/core/training/disco.js +130 -0
- package/dist/core/training/index.d.ts +2 -0
- package/dist/core/training/index.js +7 -0
- package/dist/core/training/trainer/distributed_trainer.d.ts +20 -0
- package/dist/core/training/trainer/distributed_trainer.js +65 -0
- package/dist/core/training/trainer/local_trainer.d.ts +11 -0
- package/dist/core/training/trainer/local_trainer.js +34 -0
- package/dist/core/training/trainer/round_tracker.d.ts +30 -0
- package/dist/core/training/trainer/round_tracker.js +47 -0
- package/dist/core/training/trainer/trainer.d.ts +65 -0
- package/dist/core/training/trainer/trainer.js +160 -0
- package/dist/core/training/trainer/trainer_builder.d.ts +25 -0
- package/dist/core/training/trainer/trainer_builder.js +95 -0
- package/dist/core/training/training_schemes.d.ts +5 -0
- package/dist/core/training/training_schemes.js +10 -0
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.js +2 -0
- package/dist/core/validation/index.d.ts +1 -0
- package/dist/core/validation/index.js +5 -0
- package/dist/core/validation/validator.d.ts +17 -0
- package/dist/core/validation/validator.js +104 -0
- package/dist/core/weights/aggregation.d.ts +8 -0
- package/dist/core/weights/aggregation.js +96 -0
- package/dist/core/weights/index.d.ts +2 -0
- package/dist/core/weights/index.js +7 -0
- package/dist/core/weights/weights_container.d.ts +19 -0
- package/dist/core/weights/weights_container.js +64 -0
- package/dist/dataset/data_loader/image_loader.d.ts +4 -0
- package/dist/dataset/data_loader/image_loader.js +21 -0
- package/dist/dataset/data_loader/index.d.ts +2 -0
- package/dist/dataset/data_loader/index.js +7 -0
- package/dist/dataset/data_loader/tabular_loader.d.ts +4 -0
- package/dist/dataset/data_loader/tabular_loader.js +20 -0
- package/dist/imports.d.ts +1 -0
- package/dist/imports.js +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -0
- package/package.json +34 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.aggregation = exports.WeightsContainer = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var weights_container_1 = require("./weights_container");
|
|
6
|
+
Object.defineProperty(exports, "WeightsContainer", { enumerable: true, get: function () { return weights_container_1.WeightsContainer; } });
|
|
7
|
+
exports.aggregation = (0, tslib_1.__importStar)(require("./aggregation"));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { tf, Weights } from '..';
|
|
2
|
+
export declare type TensorLike = tf.Tensor | ArrayLike<number>;
|
|
3
|
+
export declare class WeightsContainer {
|
|
4
|
+
private readonly _weights;
|
|
5
|
+
constructor(weights: Iterable<TensorLike>);
|
|
6
|
+
get weights(): Weights;
|
|
7
|
+
add(other: WeightsContainer): WeightsContainer;
|
|
8
|
+
sub(other: WeightsContainer): WeightsContainer;
|
|
9
|
+
mapWith(other: WeightsContainer, fn: (a: tf.Tensor, b: tf.Tensor) => tf.Tensor): WeightsContainer;
|
|
10
|
+
map(fn: (t: tf.Tensor, i: number) => tf.Tensor): WeightsContainer;
|
|
11
|
+
map(fn: (t: tf.Tensor) => tf.Tensor): WeightsContainer;
|
|
12
|
+
reduce(fn: (acc: tf.Tensor, t: tf.Tensor) => tf.Tensor): tf.Tensor;
|
|
13
|
+
get(index: number): tf.Tensor | undefined;
|
|
14
|
+
frobeniusNorm(): number;
|
|
15
|
+
static of(...weights: TensorLike[]): WeightsContainer;
|
|
16
|
+
static from(model: tf.LayersModel): WeightsContainer;
|
|
17
|
+
static add(a: Iterable<TensorLike>, b: Iterable<TensorLike>): WeightsContainer;
|
|
18
|
+
static sub(a: Iterable<TensorLike>, b: Iterable<TensorLike>): WeightsContainer;
|
|
19
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WeightsContainer = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var immutable_1 = require("immutable");
|
|
6
|
+
var __1 = require("..");
|
|
7
|
+
var WeightsContainer = /** @class */ (function () {
|
|
8
|
+
function WeightsContainer(weights) {
|
|
9
|
+
this._weights = (0, immutable_1.List)(weights).map(function (w) {
|
|
10
|
+
return w instanceof __1.tf.Tensor ? w : __1.tf.tensor(w);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(WeightsContainer.prototype, "weights", {
|
|
14
|
+
get: function () {
|
|
15
|
+
return this._weights.toArray();
|
|
16
|
+
},
|
|
17
|
+
enumerable: false,
|
|
18
|
+
configurable: true
|
|
19
|
+
});
|
|
20
|
+
WeightsContainer.prototype.add = function (other) {
|
|
21
|
+
return this.mapWith(other, __1.tf.add);
|
|
22
|
+
};
|
|
23
|
+
WeightsContainer.prototype.sub = function (other) {
|
|
24
|
+
return this.mapWith(other, __1.tf.sub);
|
|
25
|
+
};
|
|
26
|
+
WeightsContainer.prototype.mapWith = function (other, fn) {
|
|
27
|
+
return new WeightsContainer(this._weights
|
|
28
|
+
.zip(other._weights)
|
|
29
|
+
.map(function (_a) {
|
|
30
|
+
var _b = (0, tslib_1.__read)(_a, 2), w1 = _b[0], w2 = _b[1];
|
|
31
|
+
return fn(w1, w2);
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
WeightsContainer.prototype.map = function (fn) {
|
|
35
|
+
return new WeightsContainer(this._weights.map(fn));
|
|
36
|
+
};
|
|
37
|
+
WeightsContainer.prototype.reduce = function (fn) {
|
|
38
|
+
return this._weights.reduce(fn);
|
|
39
|
+
};
|
|
40
|
+
WeightsContainer.prototype.get = function (index) {
|
|
41
|
+
return this._weights.get(index);
|
|
42
|
+
};
|
|
43
|
+
WeightsContainer.prototype.frobeniusNorm = function () {
|
|
44
|
+
return Math.sqrt(this.map(function (w) { return w.square().sum(); }).reduce(function (a, b) { return a.add(b); }).dataSync()[0]);
|
|
45
|
+
};
|
|
46
|
+
WeightsContainer.of = function () {
|
|
47
|
+
var weights = [];
|
|
48
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
49
|
+
weights[_i] = arguments[_i];
|
|
50
|
+
}
|
|
51
|
+
return new this(weights);
|
|
52
|
+
};
|
|
53
|
+
WeightsContainer.from = function (model) {
|
|
54
|
+
return new this(model.weights.map(function (w) { return w.read(); }));
|
|
55
|
+
};
|
|
56
|
+
WeightsContainer.add = function (a, b) {
|
|
57
|
+
return new this(a).add(new this(b));
|
|
58
|
+
};
|
|
59
|
+
WeightsContainer.sub = function (a, b) {
|
|
60
|
+
return new this(a).sub(new this(b));
|
|
61
|
+
};
|
|
62
|
+
return WeightsContainer;
|
|
63
|
+
}());
|
|
64
|
+
exports.WeightsContainer = WeightsContainer;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeImageLoader = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var fs_1 = (0, tslib_1.__importDefault)(require("fs"));
|
|
6
|
+
var __1 = require("../..");
|
|
7
|
+
var NodeImageLoader = /** @class */ (function (_super) {
|
|
8
|
+
(0, tslib_1.__extends)(NodeImageLoader, _super);
|
|
9
|
+
function NodeImageLoader() {
|
|
10
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
11
|
+
}
|
|
12
|
+
NodeImageLoader.prototype.readImageFrom = function (source) {
|
|
13
|
+
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
14
|
+
return (0, tslib_1.__generator)(this, function (_a) {
|
|
15
|
+
return [2 /*return*/, __1.tf.node.decodeImage(fs_1.default.readFileSync(source))];
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
return NodeImageLoader;
|
|
20
|
+
}(__1.data.ImageLoader));
|
|
21
|
+
exports.NodeImageLoader = NodeImageLoader;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeTabularLoader = exports.NodeImageLoader = void 0;
|
|
4
|
+
var image_loader_1 = require("./image_loader");
|
|
5
|
+
Object.defineProperty(exports, "NodeImageLoader", { enumerable: true, get: function () { return image_loader_1.NodeImageLoader; } });
|
|
6
|
+
var tabular_loader_1 = require("./tabular_loader");
|
|
7
|
+
Object.defineProperty(exports, "NodeTabularLoader", { enumerable: true, get: function () { return tabular_loader_1.NodeTabularLoader; } });
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeTabularLoader = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var __1 = require("../..");
|
|
6
|
+
var NodeTabularLoader = /** @class */ (function (_super) {
|
|
7
|
+
(0, tslib_1.__extends)(NodeTabularLoader, _super);
|
|
8
|
+
function NodeTabularLoader() {
|
|
9
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
10
|
+
}
|
|
11
|
+
NodeTabularLoader.prototype.loadTabularDatasetFrom = function (source, csvConfig) {
|
|
12
|
+
var prefix = 'file://';
|
|
13
|
+
if (source.slice(0, 7) !== prefix) {
|
|
14
|
+
source = prefix + source;
|
|
15
|
+
}
|
|
16
|
+
return __1.tf.data.csv(source, csvConfig);
|
|
17
|
+
};
|
|
18
|
+
return NodeTabularLoader;
|
|
19
|
+
}(__1.data.TabularLoader));
|
|
20
|
+
exports.NodeTabularLoader = NodeTabularLoader;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as data from './dataset/data_loader';
|
package/dist/imports.js
ADDED
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@epfml/discojs-node",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "cp ./src/core/index.node.ts ./src/core/index.ts && tsc",
|
|
8
|
+
"build-win": "copy ..\\discojs-core\\src\\index.node.ts ..\\discojs-core\\src\\index.ts && tsc",
|
|
9
|
+
"test": "cp ./src/core/index.node.ts ./src/core/index.ts && mocha",
|
|
10
|
+
"lint": "cp ./src/core/index.node.ts ./src/core/index.ts && npx eslint --max-warnings 0 --ignore-pattern '*.spec.ts' --ignore-pattern 'src/core' ."
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/epfml/disco.git"
|
|
15
|
+
},
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/epfml/disco/issues"
|
|
18
|
+
},
|
|
19
|
+
"homepage": "https://github.com/epfml/disco#readme",
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"msgpack-lite": "0.1",
|
|
22
|
+
"immutable": "4",
|
|
23
|
+
"tslib": "2",
|
|
24
|
+
"@tensorflow/tfjs-node": "4",
|
|
25
|
+
"isomorphic-ws": "4",
|
|
26
|
+
"url": "0.11",
|
|
27
|
+
"@koush/wrtc": "0.5",
|
|
28
|
+
"axios": "0.27",
|
|
29
|
+
"@types/msgpack-lite": "0.1",
|
|
30
|
+
"uuid": "8",
|
|
31
|
+
"ws": "8",
|
|
32
|
+
"simple-peer": "9"
|
|
33
|
+
}
|
|
34
|
+
}
|