@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.
Files changed (174) hide show
  1. package/README.md +53 -0
  2. package/dist/core/async_buffer.d.ts +41 -0
  3. package/dist/core/async_buffer.js +97 -0
  4. package/dist/core/async_informant.d.ts +20 -0
  5. package/dist/core/async_informant.js +69 -0
  6. package/dist/core/client/base.d.ts +33 -0
  7. package/dist/core/client/base.js +35 -0
  8. package/dist/core/client/decentralized/base.d.ts +32 -0
  9. package/dist/core/client/decentralized/base.js +212 -0
  10. package/dist/core/client/decentralized/clear_text.d.ts +14 -0
  11. package/dist/core/client/decentralized/clear_text.js +96 -0
  12. package/dist/core/client/decentralized/index.d.ts +4 -0
  13. package/dist/core/client/decentralized/index.js +9 -0
  14. package/dist/core/client/decentralized/messages.d.ts +41 -0
  15. package/dist/core/client/decentralized/messages.js +54 -0
  16. package/dist/core/client/decentralized/peer.d.ts +26 -0
  17. package/dist/core/client/decentralized/peer.js +210 -0
  18. package/dist/core/client/decentralized/peer_pool.d.ts +14 -0
  19. package/dist/core/client/decentralized/peer_pool.js +92 -0
  20. package/dist/core/client/decentralized/sec_agg.d.ts +22 -0
  21. package/dist/core/client/decentralized/sec_agg.js +190 -0
  22. package/dist/core/client/decentralized/secret_shares.d.ts +3 -0
  23. package/dist/core/client/decentralized/secret_shares.js +39 -0
  24. package/dist/core/client/decentralized/types.d.ts +2 -0
  25. package/dist/core/client/decentralized/types.js +7 -0
  26. package/dist/core/client/event_connection.d.ts +37 -0
  27. package/dist/core/client/event_connection.js +158 -0
  28. package/dist/core/client/federated/client.d.ts +37 -0
  29. package/dist/core/client/federated/client.js +273 -0
  30. package/dist/core/client/federated/index.d.ts +2 -0
  31. package/dist/core/client/federated/index.js +7 -0
  32. package/dist/core/client/federated/messages.d.ts +38 -0
  33. package/dist/core/client/federated/messages.js +25 -0
  34. package/dist/core/client/index.d.ts +5 -0
  35. package/dist/core/client/index.js +11 -0
  36. package/dist/core/client/local.d.ts +8 -0
  37. package/dist/core/client/local.js +36 -0
  38. package/dist/core/client/messages.d.ts +28 -0
  39. package/dist/core/client/messages.js +33 -0
  40. package/dist/core/client/utils.d.ts +2 -0
  41. package/dist/core/client/utils.js +19 -0
  42. package/dist/core/dataset/data/data.d.ts +11 -0
  43. package/dist/core/dataset/data/data.js +20 -0
  44. package/dist/core/dataset/data/data_split.d.ts +5 -0
  45. package/dist/core/dataset/data/data_split.js +2 -0
  46. package/dist/core/dataset/data/image_data.d.ts +8 -0
  47. package/dist/core/dataset/data/image_data.js +64 -0
  48. package/dist/core/dataset/data/index.d.ts +5 -0
  49. package/dist/core/dataset/data/index.js +11 -0
  50. package/dist/core/dataset/data/preprocessing.d.ts +13 -0
  51. package/dist/core/dataset/data/preprocessing.js +33 -0
  52. package/dist/core/dataset/data/tabular_data.d.ts +8 -0
  53. package/dist/core/dataset/data/tabular_data.js +40 -0
  54. package/dist/core/dataset/data_loader/data_loader.d.ts +15 -0
  55. package/dist/core/dataset/data_loader/data_loader.js +10 -0
  56. package/dist/core/dataset/data_loader/image_loader.d.ts +17 -0
  57. package/dist/core/dataset/data_loader/image_loader.js +141 -0
  58. package/dist/core/dataset/data_loader/index.d.ts +3 -0
  59. package/dist/core/dataset/data_loader/index.js +9 -0
  60. package/dist/core/dataset/data_loader/tabular_loader.d.ts +29 -0
  61. package/dist/core/dataset/data_loader/tabular_loader.js +101 -0
  62. package/dist/core/dataset/dataset.d.ts +2 -0
  63. package/dist/core/dataset/dataset.js +2 -0
  64. package/dist/core/dataset/dataset_builder.d.ts +18 -0
  65. package/dist/core/dataset/dataset_builder.js +96 -0
  66. package/dist/core/dataset/index.d.ts +4 -0
  67. package/dist/core/dataset/index.js +14 -0
  68. package/dist/core/index.d.ts +18 -0
  69. package/dist/core/index.js +41 -0
  70. package/dist/core/informant/graph_informant.d.ts +10 -0
  71. package/dist/core/informant/graph_informant.js +23 -0
  72. package/dist/core/informant/index.d.ts +3 -0
  73. package/dist/core/informant/index.js +9 -0
  74. package/dist/core/informant/training_informant/base.d.ts +31 -0
  75. package/dist/core/informant/training_informant/base.js +83 -0
  76. package/dist/core/informant/training_informant/decentralized.d.ts +5 -0
  77. package/dist/core/informant/training_informant/decentralized.js +22 -0
  78. package/dist/core/informant/training_informant/federated.d.ts +14 -0
  79. package/dist/core/informant/training_informant/federated.js +32 -0
  80. package/dist/core/informant/training_informant/index.d.ts +4 -0
  81. package/dist/core/informant/training_informant/index.js +11 -0
  82. package/dist/core/informant/training_informant/local.d.ts +6 -0
  83. package/dist/core/informant/training_informant/local.js +20 -0
  84. package/dist/core/logging/console_logger.d.ts +18 -0
  85. package/dist/core/logging/console_logger.js +33 -0
  86. package/dist/core/logging/index.d.ts +3 -0
  87. package/dist/core/logging/index.js +9 -0
  88. package/dist/core/logging/logger.d.ts +12 -0
  89. package/dist/core/logging/logger.js +9 -0
  90. package/dist/core/logging/trainer_logger.d.ts +24 -0
  91. package/dist/core/logging/trainer_logger.js +59 -0
  92. package/dist/core/memory/base.d.ts +22 -0
  93. package/dist/core/memory/base.js +9 -0
  94. package/dist/core/memory/empty.d.ts +14 -0
  95. package/dist/core/memory/empty.js +75 -0
  96. package/dist/core/memory/index.d.ts +3 -0
  97. package/dist/core/memory/index.js +9 -0
  98. package/dist/core/memory/model_type.d.ts +4 -0
  99. package/dist/core/memory/model_type.js +9 -0
  100. package/dist/core/privacy.d.ts +11 -0
  101. package/dist/core/privacy.js +47 -0
  102. package/dist/core/serialization/index.d.ts +2 -0
  103. package/dist/core/serialization/index.js +6 -0
  104. package/dist/core/serialization/model.d.ts +5 -0
  105. package/dist/core/serialization/model.js +55 -0
  106. package/dist/core/serialization/weights.d.ts +5 -0
  107. package/dist/core/serialization/weights.js +64 -0
  108. package/dist/core/task/data_example.d.ts +5 -0
  109. package/dist/core/task/data_example.js +24 -0
  110. package/dist/core/task/display_information.d.ts +15 -0
  111. package/dist/core/task/display_information.js +49 -0
  112. package/dist/core/task/index.d.ts +3 -0
  113. package/dist/core/task/index.js +8 -0
  114. package/dist/core/task/model_compile_data.d.ts +6 -0
  115. package/dist/core/task/model_compile_data.js +22 -0
  116. package/dist/core/task/summary.d.ts +5 -0
  117. package/dist/core/task/summary.js +19 -0
  118. package/dist/core/task/task.d.ts +10 -0
  119. package/dist/core/task/task.js +31 -0
  120. package/dist/core/task/training_information.d.ts +28 -0
  121. package/dist/core/task/training_information.js +66 -0
  122. package/dist/core/tasks/cifar10.d.ts +3 -0
  123. package/dist/core/tasks/cifar10.js +65 -0
  124. package/dist/core/tasks/geotags.d.ts +3 -0
  125. package/dist/core/tasks/geotags.js +67 -0
  126. package/dist/core/tasks/index.d.ts +6 -0
  127. package/dist/core/tasks/index.js +10 -0
  128. package/dist/core/tasks/lus_covid.d.ts +3 -0
  129. package/dist/core/tasks/lus_covid.js +87 -0
  130. package/dist/core/tasks/mnist.d.ts +3 -0
  131. package/dist/core/tasks/mnist.js +60 -0
  132. package/dist/core/tasks/simple_face.d.ts +2 -0
  133. package/dist/core/tasks/simple_face.js +41 -0
  134. package/dist/core/tasks/titanic.d.ts +3 -0
  135. package/dist/core/tasks/titanic.js +88 -0
  136. package/dist/core/training/disco.d.ts +23 -0
  137. package/dist/core/training/disco.js +130 -0
  138. package/dist/core/training/index.d.ts +2 -0
  139. package/dist/core/training/index.js +7 -0
  140. package/dist/core/training/trainer/distributed_trainer.d.ts +20 -0
  141. package/dist/core/training/trainer/distributed_trainer.js +65 -0
  142. package/dist/core/training/trainer/local_trainer.d.ts +11 -0
  143. package/dist/core/training/trainer/local_trainer.js +34 -0
  144. package/dist/core/training/trainer/round_tracker.d.ts +30 -0
  145. package/dist/core/training/trainer/round_tracker.js +47 -0
  146. package/dist/core/training/trainer/trainer.d.ts +65 -0
  147. package/dist/core/training/trainer/trainer.js +160 -0
  148. package/dist/core/training/trainer/trainer_builder.d.ts +25 -0
  149. package/dist/core/training/trainer/trainer_builder.js +95 -0
  150. package/dist/core/training/training_schemes.d.ts +5 -0
  151. package/dist/core/training/training_schemes.js +10 -0
  152. package/dist/core/types.d.ts +4 -0
  153. package/dist/core/types.js +2 -0
  154. package/dist/core/validation/index.d.ts +1 -0
  155. package/dist/core/validation/index.js +5 -0
  156. package/dist/core/validation/validator.d.ts +17 -0
  157. package/dist/core/validation/validator.js +104 -0
  158. package/dist/core/weights/aggregation.d.ts +8 -0
  159. package/dist/core/weights/aggregation.js +96 -0
  160. package/dist/core/weights/index.d.ts +2 -0
  161. package/dist/core/weights/index.js +7 -0
  162. package/dist/core/weights/weights_container.d.ts +19 -0
  163. package/dist/core/weights/weights_container.js +64 -0
  164. package/dist/dataset/data_loader/image_loader.d.ts +4 -0
  165. package/dist/dataset/data_loader/image_loader.js +21 -0
  166. package/dist/dataset/data_loader/index.d.ts +2 -0
  167. package/dist/dataset/data_loader/index.js +7 -0
  168. package/dist/dataset/data_loader/tabular_loader.d.ts +4 -0
  169. package/dist/dataset/data_loader/tabular_loader.js +20 -0
  170. package/dist/imports.d.ts +1 -0
  171. package/dist/imports.js +5 -0
  172. package/dist/index.d.ts +2 -0
  173. package/dist/index.js +6 -0
  174. 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,4 @@
1
+ import { tf, data } from '../..';
2
+ export declare class NodeImageLoader extends data.ImageLoader<string> {
3
+ readImageFrom(source: string): Promise<tf.Tensor3D>;
4
+ }
@@ -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,2 @@
1
+ export { NodeImageLoader } from './image_loader';
2
+ export { NodeTabularLoader } from './tabular_loader';
@@ -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,4 @@
1
+ import { tf, data } from '../..';
2
+ export declare class NodeTabularLoader extends data.TabularLoader<string> {
3
+ loadTabularDatasetFrom(source: string, csvConfig: Record<string, unknown>): tf.data.CSVDataset;
4
+ }
@@ -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';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.data = void 0;
4
+ var tslib_1 = require("tslib");
5
+ exports.data = (0, tslib_1.__importStar)(require("./dataset/data_loader"));
@@ -0,0 +1,2 @@
1
+ export * from './core';
2
+ export * as node from './imports';
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.node = void 0;
4
+ var tslib_1 = require("tslib");
5
+ (0, tslib_1.__exportStar)(require("./core"), exports);
6
+ exports.node = (0, tslib_1.__importStar)(require("./imports"));
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
+ }