aws-cdk-neuronx-patterns 0.0.0 → 0.0.1
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/.jsii +2 -2
- package/lib/neuronx-compile.js +5 -5
- package/lib/neuronx-instance-type.js +2 -2
- package/package.json +1 -1
- package/scripts/compile.py +31 -0
package/.jsii
CHANGED
|
@@ -4750,6 +4750,6 @@
|
|
|
4750
4750
|
"symbolId": "src/neuronx-compile:QuantDtype"
|
|
4751
4751
|
}
|
|
4752
4752
|
},
|
|
4753
|
-
"version": "0.0.
|
|
4754
|
-
"fingerprint": "
|
|
4753
|
+
"version": "0.0.1",
|
|
4754
|
+
"fingerprint": "k1qfJ+hU1zq9lxyD5dBbzwv/7IWyHMaVjZZFgpYYWrY="
|
|
4755
4755
|
}
|
package/lib/neuronx-compile.js
CHANGED
|
@@ -68,7 +68,7 @@ class Parameters {
|
|
|
68
68
|
}
|
|
69
69
|
exports.Parameters = Parameters;
|
|
70
70
|
_a = JSII_RTTI_SYMBOL_1;
|
|
71
|
-
Parameters[_a] = { fqn: "aws-cdk-neuronx-patterns.Parameters", version: "0.0.
|
|
71
|
+
Parameters[_a] = { fqn: "aws-cdk-neuronx-patterns.Parameters", version: "0.0.1" };
|
|
72
72
|
/**
|
|
73
73
|
* Compile target model.
|
|
74
74
|
*/
|
|
@@ -89,7 +89,7 @@ class Model {
|
|
|
89
89
|
}
|
|
90
90
|
exports.Model = Model;
|
|
91
91
|
_b = JSII_RTTI_SYMBOL_1;
|
|
92
|
-
Model[_b] = { fqn: "aws-cdk-neuronx-patterns.Model", version: "0.0.
|
|
92
|
+
Model[_b] = { fqn: "aws-cdk-neuronx-patterns.Model", version: "0.0.1" };
|
|
93
93
|
/**
|
|
94
94
|
* Neuronx compile construct. Compile the model to work with Inferentia2 and Trainium1 and upload it to an S3 bucket.
|
|
95
95
|
*/
|
|
@@ -157,7 +157,7 @@ class NeuronxCompile extends constructs_1.Construct {
|
|
|
157
157
|
compiledArtifactPathPrefix = `${compiledArtifactPathPrefix}-quant${quantDtype}`;
|
|
158
158
|
}
|
|
159
159
|
props.bucket.grantReadWrite(computeEnvironment.instanceRole, `${compiledArtifactPathPrefix}/*`);
|
|
160
|
-
const compileScript = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "
|
|
160
|
+
const compileScript = (0, fs_1.readFileSync)((0, path_1.join)(__dirname, "../scripts/compile.py")).toString();
|
|
161
161
|
const jobDefinition = new batch.EcsJobDefinition(this, "JobDefinition", {
|
|
162
162
|
container: new batch.EcsEc2ContainerDefinition(this, "ContainerDefinition", {
|
|
163
163
|
image: runtime.image,
|
|
@@ -281,5 +281,5 @@ class NeuronxCompile extends constructs_1.Construct {
|
|
|
281
281
|
}
|
|
282
282
|
exports.NeuronxCompile = NeuronxCompile;
|
|
283
283
|
_c = JSII_RTTI_SYMBOL_1;
|
|
284
|
-
NeuronxCompile[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxCompile", version: "0.0.
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldXJvbngtY29tcGlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUFrQztBQUNsQywrQkFBNEI7QUFDNUIsNkNBQW1FO0FBQ25FLCtDQUErQztBQUMvQywyQ0FBMkM7QUFDM0MsaURBQXFEO0FBQ3JELGlEQUE0QztBQUM1Qyx1REFBMEU7QUFFMUUsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxtRUFBOEQ7QUFDOUQsNkZBQXVGO0FBZ0J2Rjs7R0FFRztBQUNILElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHVCQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsVUFBVSwwQkFBVixVQUFVLFFBS3JCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCw2RUFBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHVEQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gscUZBQStCLENBQUE7QUFDakMsQ0FBQyxFQWJXLFFBQVEsd0JBQVIsUUFBUSxRQWFuQjtBQXdCRDs7R0FFRztBQUNILE1BQWEsVUFBVTtJQUNyQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFrQjtRQUMvQixPQUFPLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFxQyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFDeEQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOztBQWhCSCxnQ0FpQkM7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFlLEVBQUUsT0FBcUI7UUFDM0QsT0FB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QUMzRCxPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7SUFDSixDQUFDOztBQXpQSCx3Q0EwUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBTaXplLCBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBiYXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWJhdGNoXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnRhaW5lckltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvZGUsIFJ1bnRpbWUsIFNpbmdsZXRvbkZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuL25ldXJvbngtaW5zdGFuY2UtdHlwZVwiO1xuaW1wb3J0IHsgTmV1cm9uT3B0aW1pemVkTWFjaGluZUltYWdlIH0gZnJvbSBcIi4vcHJpdmF0ZS9uZXVyb24tb3B0aW1pemVkLW1hY2hpbmUtaW1hZ2VcIjtcblxuLyoqXG4gKiBDb21waWxlIHJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZVJ1bnRpbWUge1xuICAvKipcbiAgICogQW4gaW1hZ2Ugb2YgdGhlIGNvbnRhaW5lciB3aGVyZSB0aGUgY29tcGlsZSBqb2IgaXMgZXhlY3V0ZWQuXG4gICAqL1xuICByZWFkb25seSBpbWFnZTogQ29udGFpbmVySW1hZ2U7XG4gIC8qKlxuICAgKiBOZXVyb254IHZlcnNpb24gaW5jbHVkZWQgaW4gY29udGFpbmVyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV1cm9ueFZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWFudCBkYXRhIHR5cGUuXG4gKi9cbmV4cG9ydCBlbnVtIFF1YW50RHR5cGUge1xuICAvKipcbiAgICogaW50OCB3ZWlnaHQgc3RvcmFnZS5cbiAgICovXG4gIFM4ID0gXCJzOFwiLFxufVxuXG4vKipcbiAqIE9wdGltaXphdGlvbiBsZXZlbC5cbiAqL1xuZXhwb3J0IGVudW0gT3B0TGV2ZWwge1xuICAvKipcbiAgICogZW5hYmxlcyB0aGUgY29yZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGluIHRoZSBjb21waWxlciwgd2hpbGUgYWxzbyBtaW5pbWl6aW5nIGNvbXBpbGUgdGltZS5cbiAgICovXG4gIE1JTklNSVpJTkdfQ09NUElMRV9USU1FID0gMSxcbiAgLyoqXG4gICAqIHByb3ZpZGVzIHRoZSBiZXN0IGJhbGFuY2UgYmV0d2VlbiBtb2RlbCBwZXJmb3JtYW5jZSBhbmQgY29tcGlsZSB0aW1lLlxuICAgKi9cbiAgQkVTVF9CQUxBTkNFID0gMixcbiAgLyoqXG4gICAqIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgbW9kZWwgZXhlY3V0aW9uIHBlcmZvcm1hbmNlIGJ1dCBtYXkgaW5jdXIgbG9uZ2VyIGNvbXBpbGUgdGltZXMgYW5kIGhpZ2hlciBob3N0IG1lbW9yeSB1c2FnZSBkdXJpbmcgbW9kZWwgY29tcGlsYXRpb24uXG4gICAqL1xuICBNT0RFTF9FWEVDVVRJT05fUEVSRk9STUFOQ0UgPSAzLFxufVxuXG4vKipcbiAqIENvbXBpbGUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIGNhbGMgZnJvbSBwYXJhbWV0ZXJzIGFuZCBxdWFudER0eXBlXG4gICAqL1xuICByZWFkb25seSB0cERlZ3JlZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gTm8gcXVhbnRcbiAgICovXG4gIHJlYWRvbmx5IHF1YW50RHR5cGU/OiBRdWFudER0eXBlO1xuICAvKipcbiAgICogQGRlZmF1bHQgNDA5MlxuICAgKi9cbiAgcmVhZG9ubHkgblBvc2l0aW9ucz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IE9wdExldmVsLkJFU1RfQkFMQU5DRVxuICAgKi9cbiAgcmVhZG9ubHkgb3B0TGV2ZWw/OiBPcHRMZXZlbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBhbW91bnQgb2YgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnMge1xuICAvKipcbiAgICogQ3JlYXRlIGEgUGFyYW1ldGVycyByZXByZXNlbnRpbmcgYW4gYW1vdW50IGJpbGlvbi5cbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYmlsaW9uWFxuICAgKiBAcmV0dXJucyBwYXJhbWV0ZXJzXG4gICAqL1xuICBzdGF0aWMgYmlsbGlvbihwYXJhbWV0ZXJzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJpbGxpb246IG51bWJlcikge31cbiAgLyoqXG4gICAqIFJldHVybiB0aGlzIG51bWJlciBvZiBwYXJhbWV0ZXJzIGFzIGJpbGlvbi5cbiAgICogQHJldHVybnMgVGhpcyBudW1iZXIgb2YgcGFyYW1ldGVycyBhcyBiaWxpb24uXG4gICAqL1xuICB0b0JpbGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5iaWxsaW9uO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSB0YXJnZXQgbW9kZWwgYmFzaWMgaW5mcm9tYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbE9wdGlvbnMge1xuICByZWFkb25seSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzO1xufVxuLyoqXG4gKiBDb21waWxlIHRhcmdldCBtb2RlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsIHtcbiAgLyoqXG4gICAqIG1vZGVsIGluZm9ybWF0aW9ucyBhdCBIdWdnaW5nRmFjZVxuICAgKiBAcGFyYW0gbW9kZWxJZCBtb2RlbCBpZCBvbiB0aGUgSHVnZ2luZ0ZhY2VcbiAgICogQHBhcmFtIG9wdGlvbnMgbW9kZWwgYmFzaWMgaW5mcm9tYXRpb25cbiAgICogQHJldHVybnMgbW9kZWwgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tSHVnZ2luZ0ZhY2UobW9kZWxJZDogc3RyaW5nLCBvcHRpb25zOiBNb2RlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsKG1vZGVsSWQsIG9wdGlvbnMpO1xuICB9XG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgbW9kZWxJZDogc3RyaW5nLFxuICAgIHJlYWRvbmx5IG9wdGlvbnM6IE1vZGVsT3B0aW9ucyxcbiAgKSB7fVxufVxuLyoqXG4gKiBQcm9wcyBvZiBOZXVyb254Q29tcGlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXVyb254Q29tcGlsZVByb3BzIHtcbiAgLyoqXG4gICAqIFZQQyBpbiB3aGljaCB0aGlzIHdpbGwgbGF1bmNoIGNvbXBpbGUgd29ya2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIGNvbXBpbGUgd29ya2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogTmV1cm9ueEluc3RhbmNlVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdG8gdXBsb2FkIGNvbXBpbGVkIGFydGlmYWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIFRoZSBtb2RlbCB0byBiZSBjb21waWxlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsOiBNb2RlbDtcbiAgLyoqXG4gICAqIFRoZSByb290IHZvbHVtZSBvZiB3b3JrZXIgaW5zdGFuY2UuXG4gICAqIEBkZWZhdWx0IC0gTiBiaWxpb24gcGFyYW1ldGVycyAqIDVHaUIgRUJTXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVTaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIENvbXBpbGUgcnVudGltZS5cbiAgICogQGRlZmF1bHQgeyBuZXVyb254U2RrVmVyc2lvbjogXCIyLjE5LjBcIiwgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcInB1YmxpYy5lY3IuYXdzL25ldXJvbi9weXRvcmNoLXRyYWluaW5nLW5ldXJvbng6Mi4xLjItbmV1cm9ueC1weTMxMC1zZGsyLjE5LjAtdWJ1bnR1MjAuMDRcIil9XG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogQ29tcGlsZVJ1bnRpbWU7XG4gIC8qKlxuICAgKiBOZXVyb254IGNvbXBpbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBFYWNoIHByb3BlcnRpZXMgYXJlIHNldCBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZU9wdGlvbnM/OiBDb21waWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSBzcG90IGluc3RhbmNlcy4gU3BvdCBpbnN0YW5jZXMgYXJlIGxlc3MgZXhwZW5zaXZlIEVDMiBpbnN0YW5jZXMgdGhhdCBjYW4gYmUgcmVjbGFpbWVkIGJ5IEVDMiBhdCBhbnkgdGltZTsgeW91ciBqb2Igd2lsbCBiZSBnaXZlbiB0d28gbWludXRlcyBvZiBub3RpY2UgYmVmb3JlIHJlY2xhbWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3BvdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVlBDIFN1Ym5ldHMgdGhpcyBDb21wdXRlIEVudmlyb25tZW50IHdpbGwgbGF1bmNoIGluc3RhbmNlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXcgc3VibmV0cyB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xufVxuXG4vKipcbiAqIE5ldXJvbnggY29tcGlsZSBjb25zdHJ1Y3QuIENvbXBpbGUgdGhlIG1vZGVsIHRvIHdvcmsgd2l0aCBJbmZlcmVudGlhMiBhbmQgVHJhaW5pdW0xIGFuZCB1cGxvYWQgaXQgdG8gYW4gUzMgYnVja2V0LlxuICovXG5leHBvcnQgY2xhc3MgTmV1cm9ueENvbXBpbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUzMgVVJMIHRoYXQgY29tcGlsZWQgYXJ0aWZhY3QgdXBsb2FkZWQuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UzNVcmw6IHN0cmluZztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldXJvbnhDb21waWxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgblBvc2l0aW9ucyA9IHByb3BzLmNvbXBpbGVPcHRpb25zPy5uUG9zaXRpb25zID8/IDQwOTI7XG4gICAgY29uc3QgcXVhbnREdHlwZSA9IHByb3BzLmNvbXBpbGVPcHRpb25zPy5xdWFudER0eXBlO1xuICAgIGNvbnN0IG9wdExldmVsID0gcHJvcHMuY29tcGlsZU9wdGlvbnM/Lm9wdExldmVsID8/IE9wdExldmVsLkJFU1RfQkFMQU5DRTtcbiAgICBjb25zdCB0cERlZ3JlZSA9XG4gICAgICBwcm9wcy5jb21waWxlT3B0aW9ucz8udHBEZWdyZWUgPz9cbiAgICAgIHRoaXMuY2FsY1RwRGVncmVlKHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycywge1xuICAgICAgICBuUG9zaXRpb25zLFxuICAgICAgICBxdWFudER0eXBlLFxuICAgICAgfSk7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID1cbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZSA/PyB0aGlzLnNlbGVjdEluc3RhbmNlVHlwZUJ5VHBEZWdyZWUodHBEZWdyZWUpO1xuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbmV3IGVjMi5MYXVuY2hUZW1wbGF0ZSh0aGlzLCBcIkxhdW5jaFRlbXBsYXRlXCIsIHtcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICB2b2x1bWU6IGVjMi5CbG9ja0RldmljZVZvbHVtZS5lYnMoXG4gICAgICAgICAgICBwcm9wcy52b2x1bWVTaXplPy50b0dpYmlieXRlcygpID8/XG4gICAgICAgICAgICAgIHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycy50b0JpbGlvbigpICogNSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlRW52aXJvbm1lbnQgPSBuZXcgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIkNvbXB1dGVFbnZpcm9ubWVudFwiLFxuICAgICAge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICAgICAgaW5zdGFuY2VUeXBlczogW2luc3RhbmNlVHlwZS5pbnN0YW5jZVR5cGVdLFxuICAgICAgICB1c2VPcHRpbWFsSW5zdGFuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2UodGhpcywgXCJNYWNoaW5JbWFnZVwiKSxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGltYWdlVHlwZTogXCJFQ1NfQUwyMDIzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGUsXG4gICAgICAgIHNwb3Q6IHByb3BzLnNwb3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgKFxuICAgICAgY29tcHV0ZUVudmlyb25tZW50Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGJhdGNoLkNmbkNvbXB1dGVFbnZpcm9ubWVudFxuICAgICkuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiQ29tcHV0ZVJlc291cmNlcy5MYXVuY2hUZW1wbGF0ZS5WZXJzaW9uXCIsXG4gICAgICBsYXVuY2hUZW1wbGF0ZS5sYXRlc3RWZXJzaW9uTnVtYmVyLFxuICAgICk7XG5cbiAgICBUYWdzLm9mKGNvbXB1dGVFbnZpcm9ubWVudCkuYWRkKFwiTmFtZVwiLCBcIm5ldXJvbngtY29tcGlsZS13b3JrZXJcIik7XG4gICAgY29uc3Qgam9iUXVldWUgPSBuZXcgYmF0Y2guSm9iUXVldWUodGhpcywgXCJKb2JRdWV1ZVwiLCB7XG4gICAgICBjb21wdXRlRW52aXJvbm1lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wdXRlRW52aXJvbm1lbnQsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgam9iU3RhdGVUaW1lTGltaXRBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZTogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zU3RhdGUuUlVOTkFCTEUsXG4gICAgICAgICAgcmVhc29uOiBiYXRjaC5Kb2JTdGF0ZVRpbWVMaW1pdEFjdGlvbnNSZWFzb24uSk9CX1JFU09VUkNFX1JFUVVJUkVNRU5ULFxuICAgICAgICAgIG1heFRpbWU6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgICAgIGFjdGlvbjogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zQWN0aW9uLkNBTkNFTCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBydW50aW1lOiBDb21waWxlUnVudGltZSAmIHsgbmV1cm9ueFRyYW5zZm9ybWVyc1ZlcnNpb24/OiBzdHJpbmcgfSA9XG4gICAgICBwcm9wcy5ydW50aW1lID8/IHtcbiAgICAgICAgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcbiAgICAgICAgICBcInB1YmxpYy5lY3IuYXdzL25ldXJvbi9weXRvcmNoLXRyYWluaW5nLW5ldXJvbng6Mi4xLjItbmV1cm9ueC1weTMxMC1zZGsyLjE5LjAtdWJ1bnR1MjAuMDRcIixcbiAgICAgICAgKSxcbiAgICAgICAgbmV1cm9ueFZlcnNpb246IFwiMi4xOS4wXCIsXG4gICAgICAgIG5ldXJvbnhUcmFuc2Zvcm1lcnNWZXJzaW9uOiBcIjAuMTEuMzUxXCIgYXMgY29uc3QsXG4gICAgICB9O1xuICAgIGxldCBjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeCA9IGAke3Byb3BzLm1vZGVsLm1vZGVsSWR9L25ldXJvbngtJHtydW50aW1lLm5ldXJvbnhWZXJzaW9ufS90cCR7dHBEZWdyZWV9LW5wJHtuUG9zaXRpb25zfS1vcHQke29wdExldmVsfWA7XG4gICAgaWYgKHF1YW50RHR5cGUhISkge1xuICAgICAgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXggPSBgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0tcXVhbnQke3F1YW50RHR5cGV9YDtcbiAgICB9XG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgY29tcHV0ZUVudmlyb25tZW50Lmluc3RhbmNlUm9sZSEsXG4gICAgICBgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0vKmAsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBpbGVTY3JpcHQgPSByZWFkRmlsZVN5bmMoXG4gICAgICBqb2luKF9fZGlybmFtZSwgXCJwcml2YXRlL2NvbXBpbGUucHlcIiksXG4gICAgKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGpvYkRlZmluaXRpb24gPSBuZXcgYmF0Y2guRWNzSm9iRGVmaW5pdGlvbih0aGlzLCBcIkpvYkRlZmluaXRpb25cIiwge1xuICAgICAgY29udGFpbmVyOiBuZXcgYmF0Y2guRWNzRWMyQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb250YWluZXJEZWZpbml0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBpbWFnZTogcnVudGltZS5pbWFnZSxcbiAgICAgICAgICAvLyBUaGUgZmxsb3dpbmcgY29tbWFuZCB3YXMgZXhlY3V0ZWQgb24gaW5mMi44eGxhcmdlXG4gICAgICAgICAgLy8gc2gtNS4yJCBmcmVlIC1iXG4gICAgICAgICAgLy8gXHRcdFx0dG90YWxcdFx0XHRcdFx0dXNlZFx0XHRcdGZyZWVcdFx0XHRcdFx0c2hhcmVkXHRidWZmL2NhY2hlXHRhdmFpbGFibGVcbiAgICAgICAgICAvLyBNZW06XHQxMzIyNjU3NjY5MTJcdDg2NjMyMDM4NFx0MTMwMzQxNzg1NjAwXHQ2Njc2NDhcdDEwNTc2NjA5MjhcdDEzMDUyOTE0ODkyOFxuICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iYXRjaC9sYXRlc3QvdXNlcmd1aWRlL21lbW9yeS1tYW5hZ2VtZW50Lmh0bWxcbiAgICAgICAgICBtZW1vcnk6IFNpemUubWViaWJ5dGVzKFxuICAgICAgICAgICAgTWF0aC5jZWlsKGluc3RhbmNlVHlwZS5tZW1vcnkudG9NZWJpYnl0ZXMoKSAqIDAuOTUpLFxuICAgICAgICAgICksXG4gICAgICAgICAgY3B1OiBpbnN0YW5jZVR5cGUudkNwdSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICBgY2F0IDw8RU9GID4gY29tcGlsZS5weVxcbiR7Y29tcGlsZVNjcmlwdH1cXG5FT0ZcXG5gLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBydW50aW1lLm5ldXJvbnhUcmFuc2Zvcm1lcnNWZXJzaW9uXG4gICAgICAgICAgICAgICAgPyBcInBpcCBpbnN0YWxsIC1VIC0tZXh0cmEtaW5kZXgtdXJsIGh0dHBzOi8vcGlwLnJlcG9zLm5ldXJvbi5hbWF6b25hd3MuY29tIHRyYW5zZm9ybWVycy1uZXVyb254PT0kTkVVUk9OWF9UUkFOU0ZPUk1FUlNfVkVSU0lPTlwiXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIFwiY3VybCAtcyBodHRwczovL3BhY2thZ2VjbG91ZC5pby9pbnN0YWxsL3JlcG9zaXRvcmllcy9naXRodWIvZ2l0LWxmcy9zY3JpcHQuZGViLnNoIHwgYmFzaFwiLFxuICAgICAgICAgICAgICBcImFwdC1nZXQgaW5zdGFsbCBnaXQtbGZzXCIsXG4gICAgICAgICAgICAgIFwiZ2l0IGxmcyBpbnN0YWxsXCIsXG4gICAgICAgICAgICAgIGBnaXQgY2xvbmUgaHR0cHM6Ly9odWdnaW5nZmFjZS5jby8ke3Byb3BzLm1vZGVsLm1vZGVsSWR9IG1vZGVsYCxcbiAgICAgICAgICAgICAgXCJybSAtcmYgbW9kZWwvLmdpdFwiLFxuICAgICAgICAgICAgICBcInB5dGhvbiAuL2NvbXBpbGUucHlcIixcbiAgICAgICAgICAgICAgYGF3cyBzMyBzeW5jIC0tbm8tcHJvZ3Jlc3MgLi9tb2RlbCAke3Byb3BzLmJ1Y2tldC5zM1VybEZvck9iamVjdChgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0vbW9kZWxgKX1gLFxuICAgICAgICAgICAgICBgYXdzIHMzIHN5bmMgLS1uby1wcm9ncmVzcyAuL2NvbXBpbGVkICR7cHJvcHMuYnVja2V0LnMzVXJsRm9yT2JqZWN0KGAke2NvbXBpbGVkQXJ0aWZhY3RQYXRoUHJlZml4fS9jb21waWxlZGApfWAsXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYpID0+ICEhdilcbiAgICAgICAgICAgICAgLmpvaW4oXCIgJiYgXCIpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIE1PREVMX0lEOiBwcm9wcy5tb2RlbC5tb2RlbElkLFxuICAgICAgICAgICAgVFBfREVHUkVFOiB0cERlZ3JlZS50b1N0cmluZygpLFxuICAgICAgICAgICAgTl9QT1NJVElPTlM6IG5Qb3NpdGlvbnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE9QVF9MRVZFTDogb3B0TGV2ZWwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFFVQU5UX0RUWVBFOiBxdWFudER0eXBlPy50b1N0cmluZygpID8/IFwiXCIsXG4gICAgICAgICAgICBBUlRJRkFDVF9TM19VUkw6IHByb3BzLmJ1Y2tldC5zM1VybEZvck9iamVjdChcbiAgICAgICAgICAgICAgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXgsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgTkVVUk9OWF9UUkFOU0ZPUk1FUlNfVkVSU0lPTjpcbiAgICAgICAgICAgICAgcnVudGltZS5uZXVyb254VHJhbnNmb3JtZXJzVmVyc2lvbiA/PyBcIlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMuY29ubmVjdEFjY2VsZXJhdG9yQ2hpcHMoam9iRGVmaW5pdGlvbiwgaW5zdGFuY2VUeXBlKTtcblxuICAgIGNvbnN0IGpvYlN1Ym1pdEZ1bmN0aW9uID0gbmV3IFNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsIFwiSm9iU3VibWl0RnVuY3Rpb25cIiwge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwicHJpdmF0ZS9hd2FpdC1jb21waWxlLWpvYlwiKSksXG4gICAgICBoYW5kbGVyOiBcImluZGV4Lm9uRXZlbnRcIixcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICB1dWlkOiBcIjEzNjFmNDY5LTVjOTItNGM0Ni05ZTExLTVkMWRiZjkyNWJhY1wiLFxuICAgIH0pO1xuICAgIGpvYkRlZmluaXRpb24uZ3JhbnRTdWJtaXRKb2Ioam9iU3VibWl0RnVuY3Rpb24sIGpvYlF1ZXVlKTtcbiAgICBjb25zdCBqb2JNb25pdG9yaW5nRnVuY3Rpb24gPSBuZXcgU2luZ2xldG9uRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJKb2JNb25pdG9yaW5nRnVuY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwicHJpdmF0ZS9hd2FpdC1jb21waWxlLWpvYlwiKSksXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaXNDb21wbGV0ZVwiLFxuICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICB1dWlkOiBcImRmMTZkYmE4LTVmNzctNDgwYy1hNmFkLWNmZGY3NGMzZGU2MlwiLFxuICAgICAgfSxcbiAgICApO1xuICAgIEdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIHJlc291cmNlQXJuczogW1wiKlwiXSxcbiAgICAgIGdyYW50ZWU6IGpvYk1vbml0b3JpbmdGdW5jdGlvbixcbiAgICAgIGFjdGlvbnM6IFtcImJhdGNoOkRlc2NyaWJlSm9ic1wiXSxcbiAgICB9KTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCBcIkNvbXBpbGVKb2JQcm92aWRlclwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogam9iU3VibWl0RnVuY3Rpb24sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogam9iTW9uaXRvcmluZ0Z1bmN0aW9uLFxuICAgICAgcXVlcnlJbnRlcnZhbDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHRvdGFsVGltZW91dDogRHVyYXRpb24uaG91cnMoMSksXG4gICAgfSk7XG4gICAgY29uc3QgY29tcGlsZUpvYiA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkNvbXBpbGVKb2JcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpDb21waWxlSm9iXCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGpvYkRlZmluaXRpb25Bcm46IGpvYkRlZmluaXRpb24uam9iRGVmaW5pdGlvbkFybixcbiAgICAgICAgam9iUXVldWVBcm46IGpvYlF1ZXVlLmpvYlF1ZXVlQXJuLFxuICAgICAgICBhcnRpZmFjdFMzVXJsOiBwcm9wcy5idWNrZXQuczNVcmxGb3JPYmplY3QoY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBpbGVkQXJ0aWZhY3RTM1VybCA9IGNvbXBpbGVKb2IuZ2V0QXR0U3RyaW5nKFwiQXJ0aWZhY3RTM1VybFwiKTtcbiAgfVxuXG4gIHByaXZhdGUgY29ubmVjdEFjY2VsZXJhdG9yQ2hpcHMoXG4gICAgam9iRGVmaW5pdGlvbjogYmF0Y2guRWNzSm9iRGVmaW5pdGlvbixcbiAgICBpbnN0YW5jZVR5cGU6IE5ldXJvbnhJbnN0YW5jZVR5cGUsXG4gICkge1xuICAgIHR5cGUgUGFzY2FsQ2FzZTxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICAgIFtQIGluIGtleW9mIFQgYXMgUCBleHRlbmRzIHN0cmluZyA/IENhcGl0YWxpemU8UD4gOiBuZXZlcl06IFRbUF07XG4gICAgfTtcbiAgICBjb25zdCBkZXZpY2VzID0gQXJyYXkuZnJvbSh7XG4gICAgICBsZW5ndGg6IGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLmNoaXBzLFxuICAgIH0pLm1hcChcbiAgICAgIChfLCBpbmRleCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBIb3N0UGF0aDogYC9kZXYvbmV1cm9uJHtpbmRleH1gLFxuICAgICAgICAgIENvbnRhaW5lclBhdGg6IGAvZGV2L25ldXJvbiR7aW5kZXh9YCxcbiAgICAgICAgICBQZXJtaXNzaW9uczogW1wicmVhZFwiLCBcIndyaXRlXCJdLFxuICAgICAgICB9KSBzYXRpc2ZpZXMgUGFzY2FsQ2FzZTxiYXRjaC5DZm5Kb2JEZWZpbml0aW9uLkRldmljZVByb3BlcnR5PixcbiAgICApO1xuICAgIGNvbnN0IGNmbkpvYkRlZmluaXRpb24gPSBqb2JEZWZpbml0aW9uLm5vZGVcbiAgICAgIC5kZWZhdWx0Q2hpbGQgYXMgYmF0Y2guQ2ZuSm9iRGVmaW5pdGlvbjtcbiAgICBjZm5Kb2JEZWZpbml0aW9uLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIkNvbnRhaW5lclByb3BlcnRpZXMuTGludXhQYXJhbWV0ZXJzLkRldmljZXNcIixcbiAgICAgIGRldmljZXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY1RwRGVncmVlKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMsIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9ucykge1xuICAgIC8vIGNhc2Ugb2YgZmxvYXQxNlxuICAgIGNvbnN0IGJ5dGVzUGVyUGFyYW1ldGUgPSAxNiAvIDg7XG4gICAgLy8gbWVtb3J5ID0gYnl0ZXMgcGVyIHBhcmFtZXRlciAqIG51bWJlciBvZiBwYXJhbWV0ZXJzXG4gICAgbGV0IG1lbW9yeSA9IFNpemUuZ2liaWJ5dGVzKGJ5dGVzUGVyUGFyYW1ldGUgKiBwYXJhbWV0ZXJzLnRvQmlsaW9uKCkpO1xuICAgIHN3aXRjaCAoY29tcGlsZU9wdGlvbnMucXVhbnREdHlwZSkge1xuICAgICAgY2FzZSBRdWFudER0eXBlLlM4OlxuICAgICAgICBtZW1vcnkgPSBTaXplLmdpYmlieXRlcyhtZW1vcnkudG9HaWJpYnl0ZXMoKSAvIDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgbmVyb254Q29yZU1lbW9yeSA9IFNpemUuZ2liaWJ5dGVzKDE2KTtcbiAgICBjb25zdCBtaW5pbXVtID0gTWF0aC5jZWlsKFxuICAgICAgbWVtb3J5LnRvR2liaWJ5dGVzKCkgLyBuZXJvbnhDb3JlTWVtb3J5LnRvR2liaWJ5dGVzKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHRwRGVncmVlcyA9IFsxLCAyLCA0LCA4LCAyNF07XG4gICAgZm9yIChjb25zdCB0cERlZ3JlZSBvZiB0cERlZ3JlZXMpIHtcbiAgICAgIGlmIChtaW5pbXVtIDw9IHRwRGVncmVlKSB7XG4gICAgICAgIHJldHVybiB0cERlZ3JlZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUaGlzIG1vZGVsIGlzIHRvbyBsYXJnZSwgSSBjYW4gbm90IHN1cHBvcnQgdGhpcyBtb2RlbCBjdXJyZW50IHZlcnNpb24uXCIsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW5zdGFuY2VUeXBlQnlUcERlZ3JlZSh0cERlZ3JlZTogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlcyA9IFtcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl84WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzI0WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzQ4WExBUkdFLFxuICAgIF07XG4gICAgZm9yIChjb25zdCBpbnN0YW5jZVR5cGUgb2YgaW5zdGFuY2VUeXBlcykge1xuICAgICAgaWYgKHRwRGVncmVlIDw9IGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3Jlcykge1xuICAgICAgICByZXR1cm4gaW5zdGFuY2VUeXBlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlRoaXMgbW9kZWwgaXMgdG9vIGxhcmdlLCBJIGNhbiBub3Qgc3VwcG9ydCB0aGlzIG1vZGVsIGN1cnJlbnQgdmVyc2lvbi5cIixcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
284
|
+
NeuronxCompile[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxCompile", version: "0.0.1" };
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25ldXJvbngtY29tcGlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJCQUFrQztBQUNsQywrQkFBNEI7QUFDNUIsNkNBQW1FO0FBQ25FLCtDQUErQztBQUMvQywyQ0FBMkM7QUFDM0MsaURBQXFEO0FBQ3JELGlEQUE0QztBQUM1Qyx1REFBMEU7QUFFMUUsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxtRUFBOEQ7QUFDOUQsNkZBQXVGO0FBZ0J2Rjs7R0FFRztBQUNILElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHVCQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsVUFBVSwwQkFBVixVQUFVLFFBS3JCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLFFBYVg7QUFiRCxXQUFZLFFBQVE7SUFDbEI7O09BRUc7SUFDSCw2RUFBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHVEQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gscUZBQStCLENBQUE7QUFDakMsQ0FBQyxFQWJXLFFBQVEsd0JBQVIsUUFBUSxRQWFuQjtBQXdCRDs7R0FFRztBQUNILE1BQWEsVUFBVTtJQUNyQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFrQjtRQUMvQixPQUFPLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxZQUFxQyxPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7SUFDeEQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDOztBQWhCSCxnQ0FpQkM7OztBQVFEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFlLEVBQUUsT0FBcUI7UUFDM0QsT0FB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QUMzRCxPQUFPLFlBQVksQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0VBQXdFLENBQ3pFLENBQUM7SUFDSixDQUFDOztBQXpQSCx3Q0EwUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBTaXplLCBUYWdzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBiYXRjaCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWJhdGNoXCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnRhaW5lckltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvZGUsIFJ1bnRpbWUsIFNpbmdsZXRvbkZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTmV1cm9ueEluc3RhbmNlVHlwZSB9IGZyb20gXCIuL25ldXJvbngtaW5zdGFuY2UtdHlwZVwiO1xuaW1wb3J0IHsgTmV1cm9uT3B0aW1pemVkTWFjaGluZUltYWdlIH0gZnJvbSBcIi4vcHJpdmF0ZS9uZXVyb24tb3B0aW1pemVkLW1hY2hpbmUtaW1hZ2VcIjtcblxuLyoqXG4gKiBDb21waWxlIHJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZVJ1bnRpbWUge1xuICAvKipcbiAgICogQW4gaW1hZ2Ugb2YgdGhlIGNvbnRhaW5lciB3aGVyZSB0aGUgY29tcGlsZSBqb2IgaXMgZXhlY3V0ZWQuXG4gICAqL1xuICByZWFkb25seSBpbWFnZTogQ29udGFpbmVySW1hZ2U7XG4gIC8qKlxuICAgKiBOZXVyb254IHZlcnNpb24gaW5jbHVkZWQgaW4gY29udGFpbmVyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV1cm9ueFZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWFudCBkYXRhIHR5cGUuXG4gKi9cbmV4cG9ydCBlbnVtIFF1YW50RHR5cGUge1xuICAvKipcbiAgICogaW50OCB3ZWlnaHQgc3RvcmFnZS5cbiAgICovXG4gIFM4ID0gXCJzOFwiLFxufVxuXG4vKipcbiAqIE9wdGltaXphdGlvbiBsZXZlbC5cbiAqL1xuZXhwb3J0IGVudW0gT3B0TGV2ZWwge1xuICAvKipcbiAgICogZW5hYmxlcyB0aGUgY29yZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGluIHRoZSBjb21waWxlciwgd2hpbGUgYWxzbyBtaW5pbWl6aW5nIGNvbXBpbGUgdGltZS5cbiAgICovXG4gIE1JTklNSVpJTkdfQ09NUElMRV9USU1FID0gMSxcbiAgLyoqXG4gICAqIHByb3ZpZGVzIHRoZSBiZXN0IGJhbGFuY2UgYmV0d2VlbiBtb2RlbCBwZXJmb3JtYW5jZSBhbmQgY29tcGlsZSB0aW1lLlxuICAgKi9cbiAgQkVTVF9CQUxBTkNFID0gMixcbiAgLyoqXG4gICAqIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgbW9kZWwgZXhlY3V0aW9uIHBlcmZvcm1hbmNlIGJ1dCBtYXkgaW5jdXIgbG9uZ2VyIGNvbXBpbGUgdGltZXMgYW5kIGhpZ2hlciBob3N0IG1lbW9yeSB1c2FnZSBkdXJpbmcgbW9kZWwgY29tcGlsYXRpb24uXG4gICAqL1xuICBNT0RFTF9FWEVDVVRJT05fUEVSRk9STUFOQ0UgPSAzLFxufVxuXG4vKipcbiAqIENvbXBpbGUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIGNhbGMgZnJvbSBwYXJhbWV0ZXJzIGFuZCBxdWFudER0eXBlXG4gICAqL1xuICByZWFkb25seSB0cERlZ3JlZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC0gTm8gcXVhbnRcbiAgICovXG4gIHJlYWRvbmx5IHF1YW50RHR5cGU/OiBRdWFudER0eXBlO1xuICAvKipcbiAgICogQGRlZmF1bHQgNDA5MlxuICAgKi9cbiAgcmVhZG9ubHkgblBvc2l0aW9ucz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IE9wdExldmVsLkJFU1RfQkFMQU5DRVxuICAgKi9cbiAgcmVhZG9ubHkgb3B0TGV2ZWw/OiBPcHRMZXZlbDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBhbW91bnQgb2YgcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlcnMge1xuICAvKipcbiAgICogQ3JlYXRlIGEgUGFyYW1ldGVycyByZXByZXNlbnRpbmcgYW4gYW1vdW50IGJpbGlvbi5cbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYmlsaW9uWFxuICAgKiBAcmV0dXJucyBwYXJhbWV0ZXJzXG4gICAqL1xuICBzdGF0aWMgYmlsbGlvbihwYXJhbWV0ZXJzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gIH1cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJpbGxpb246IG51bWJlcikge31cbiAgLyoqXG4gICAqIFJldHVybiB0aGlzIG51bWJlciBvZiBwYXJhbWV0ZXJzIGFzIGJpbGlvbi5cbiAgICogQHJldHVybnMgVGhpcyBudW1iZXIgb2YgcGFyYW1ldGVycyBhcyBiaWxpb24uXG4gICAqL1xuICB0b0JpbGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5iaWxsaW9uO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSB0YXJnZXQgbW9kZWwgYmFzaWMgaW5mcm9tYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb2RlbE9wdGlvbnMge1xuICByZWFkb25seSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzO1xufVxuLyoqXG4gKiBDb21waWxlIHRhcmdldCBtb2RlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vZGVsIHtcbiAgLyoqXG4gICAqIG1vZGVsIGluZm9ybWF0aW9ucyBhdCBIdWdnaW5nRmFjZVxuICAgKiBAcGFyYW0gbW9kZWxJZCBtb2RlbCBpZCBvbiB0aGUgSHVnZ2luZ0ZhY2VcbiAgICogQHBhcmFtIG9wdGlvbnMgbW9kZWwgYmFzaWMgaW5mcm9tYXRpb25cbiAgICogQHJldHVybnMgbW9kZWwgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tSHVnZ2luZ0ZhY2UobW9kZWxJZDogc3RyaW5nLCBvcHRpb25zOiBNb2RlbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IE1vZGVsKG1vZGVsSWQsIG9wdGlvbnMpO1xuICB9XG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgbW9kZWxJZDogc3RyaW5nLFxuICAgIHJlYWRvbmx5IG9wdGlvbnM6IE1vZGVsT3B0aW9ucyxcbiAgKSB7fVxufVxuLyoqXG4gKiBQcm9wcyBvZiBOZXVyb254Q29tcGlsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXVyb254Q29tcGlsZVByb3BzIHtcbiAgLyoqXG4gICAqIFZQQyBpbiB3aGljaCB0aGlzIHdpbGwgbGF1bmNoIGNvbXBpbGUgd29ya2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIGNvbXBpbGUgd29ya2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogTmV1cm9ueEluc3RhbmNlVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdG8gdXBsb2FkIGNvbXBpbGVkIGFydGlmYWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIFRoZSBtb2RlbCB0byBiZSBjb21waWxlZC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGVsOiBNb2RlbDtcbiAgLyoqXG4gICAqIFRoZSByb290IHZvbHVtZSBvZiB3b3JrZXIgaW5zdGFuY2UuXG4gICAqIEBkZWZhdWx0IC0gTiBiaWxpb24gcGFyYW1ldGVycyAqIDVHaUIgRUJTXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVTaXplPzogU2l6ZTtcbiAgLyoqXG4gICAqIENvbXBpbGUgcnVudGltZS5cbiAgICogQGRlZmF1bHQgeyBuZXVyb254U2RrVmVyc2lvbjogXCIyLjE5LjBcIiwgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcInB1YmxpYy5lY3IuYXdzL25ldXJvbi9weXRvcmNoLXRyYWluaW5nLW5ldXJvbng6Mi4xLjItbmV1cm9ueC1weTMxMC1zZGsyLjE5LjAtdWJ1bnR1MjAuMDRcIil9XG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogQ29tcGlsZVJ1bnRpbWU7XG4gIC8qKlxuICAgKiBOZXVyb254IGNvbXBpbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgLSBFYWNoIHByb3BlcnRpZXMgYXJlIHNldCBkZWZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGlsZU9wdGlvbnM/OiBDb21waWxlT3B0aW9ucztcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIHVzZSBzcG90IGluc3RhbmNlcy4gU3BvdCBpbnN0YW5jZXMgYXJlIGxlc3MgZXhwZW5zaXZlIEVDMiBpbnN0YW5jZXMgdGhhdCBjYW4gYmUgcmVjbGFpbWVkIGJ5IEVDMiBhdCBhbnkgdGltZTsgeW91ciBqb2Igd2lsbCBiZSBnaXZlbiB0d28gbWludXRlcyBvZiBub3RpY2UgYmVmb3JlIHJlY2xhbWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3BvdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgVlBDIFN1Ym5ldHMgdGhpcyBDb21wdXRlIEVudmlyb25tZW50IHdpbGwgbGF1bmNoIGluc3RhbmNlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBuZXcgc3VibmV0cyB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xufVxuXG4vKipcbiAqIE5ldXJvbnggY29tcGlsZSBjb25zdHJ1Y3QuIENvbXBpbGUgdGhlIG1vZGVsIHRvIHdvcmsgd2l0aCBJbmZlcmVudGlhMiBhbmQgVHJhaW5pdW0xIGFuZCB1cGxvYWQgaXQgdG8gYW4gUzMgYnVja2V0LlxuICovXG5leHBvcnQgY2xhc3MgTmV1cm9ueENvbXBpbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogUzMgVVJMIHRoYXQgY29tcGlsZWQgYXJ0aWZhY3QgdXBsb2FkZWQuXG4gICAqL1xuICByZWFkb25seSBjb21waWxlZEFydGlmYWN0UzNVcmw6IHN0cmluZztcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldXJvbnhDb21waWxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgblBvc2l0aW9ucyA9IHByb3BzLmNvbXBpbGVPcHRpb25zPy5uUG9zaXRpb25zID8/IDQwOTI7XG4gICAgY29uc3QgcXVhbnREdHlwZSA9IHByb3BzLmNvbXBpbGVPcHRpb25zPy5xdWFudER0eXBlO1xuICAgIGNvbnN0IG9wdExldmVsID0gcHJvcHMuY29tcGlsZU9wdGlvbnM/Lm9wdExldmVsID8/IE9wdExldmVsLkJFU1RfQkFMQU5DRTtcbiAgICBjb25zdCB0cERlZ3JlZSA9XG4gICAgICBwcm9wcy5jb21waWxlT3B0aW9ucz8udHBEZWdyZWUgPz9cbiAgICAgIHRoaXMuY2FsY1RwRGVncmVlKHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycywge1xuICAgICAgICBuUG9zaXRpb25zLFxuICAgICAgICBxdWFudER0eXBlLFxuICAgICAgfSk7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlID1cbiAgICAgIHByb3BzLmluc3RhbmNlVHlwZSA/PyB0aGlzLnNlbGVjdEluc3RhbmNlVHlwZUJ5VHBEZWdyZWUodHBEZWdyZWUpO1xuICAgIGNvbnN0IGxhdW5jaFRlbXBsYXRlID0gbmV3IGVjMi5MYXVuY2hUZW1wbGF0ZSh0aGlzLCBcIkxhdW5jaFRlbXBsYXRlXCIsIHtcbiAgICAgIGJsb2NrRGV2aWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZGV2aWNlTmFtZTogXCIvZGV2L3h2ZGFcIixcbiAgICAgICAgICB2b2x1bWU6IGVjMi5CbG9ja0RldmljZVZvbHVtZS5lYnMoXG4gICAgICAgICAgICBwcm9wcy52b2x1bWVTaXplPy50b0dpYmlieXRlcygpID8/XG4gICAgICAgICAgICAgIHByb3BzLm1vZGVsLm9wdGlvbnMucGFyYW1ldGVycy50b0JpbGlvbigpICogNSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlRW52aXJvbm1lbnQgPSBuZXcgYmF0Y2guTWFuYWdlZEVjMkVjc0NvbXB1dGVFbnZpcm9ubWVudChcbiAgICAgIHRoaXMsXG4gICAgICBcIkNvbXB1dGVFbnZpcm9ubWVudFwiLFxuICAgICAge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICAgICAgaW5zdGFuY2VUeXBlczogW2luc3RhbmNlVHlwZS5pbnN0YW5jZVR5cGVdLFxuICAgICAgICB1c2VPcHRpbWFsSW5zdGFuY2VDbGFzc2VzOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW1hZ2U6IG5ldyBOZXVyb25PcHRpbWl6ZWRNYWNoaW5lSW1hZ2UodGhpcywgXCJNYWNoaW5JbWFnZVwiKSxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGltYWdlVHlwZTogXCJFQ1NfQUwyMDIzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGUsXG4gICAgICAgIHNwb3Q6IHByb3BzLnNwb3QsXG4gICAgICB9LFxuICAgICk7XG4gICAgKFxuICAgICAgY29tcHV0ZUVudmlyb25tZW50Lm5vZGUuZGVmYXVsdENoaWxkIGFzIGJhdGNoLkNmbkNvbXB1dGVFbnZpcm9ubWVudFxuICAgICkuYWRkUHJvcGVydHlPdmVycmlkZShcbiAgICAgIFwiQ29tcHV0ZVJlc291cmNlcy5MYXVuY2hUZW1wbGF0ZS5WZXJzaW9uXCIsXG4gICAgICBsYXVuY2hUZW1wbGF0ZS5sYXRlc3RWZXJzaW9uTnVtYmVyLFxuICAgICk7XG5cbiAgICBUYWdzLm9mKGNvbXB1dGVFbnZpcm9ubWVudCkuYWRkKFwiTmFtZVwiLCBcIm5ldXJvbngtY29tcGlsZS13b3JrZXJcIik7XG4gICAgY29uc3Qgam9iUXVldWUgPSBuZXcgYmF0Y2guSm9iUXVldWUodGhpcywgXCJKb2JRdWV1ZVwiLCB7XG4gICAgICBjb21wdXRlRW52aXJvbm1lbnRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wdXRlRW52aXJvbm1lbnQsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgam9iU3RhdGVUaW1lTGltaXRBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZTogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zU3RhdGUuUlVOTkFCTEUsXG4gICAgICAgICAgcmVhc29uOiBiYXRjaC5Kb2JTdGF0ZVRpbWVMaW1pdEFjdGlvbnNSZWFzb24uSk9CX1JFU09VUkNFX1JFUVVJUkVNRU5ULFxuICAgICAgICAgIG1heFRpbWU6IER1cmF0aW9uLm1pbnV0ZXMoMTApLFxuICAgICAgICAgIGFjdGlvbjogYmF0Y2guSm9iU3RhdGVUaW1lTGltaXRBY3Rpb25zQWN0aW9uLkNBTkNFTCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBydW50aW1lOiBDb21waWxlUnVudGltZSAmIHsgbmV1cm9ueFRyYW5zZm9ybWVyc1ZlcnNpb24/OiBzdHJpbmcgfSA9XG4gICAgICBwcm9wcy5ydW50aW1lID8/IHtcbiAgICAgICAgaW1hZ2U6IENvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShcbiAgICAgICAgICBcInB1YmxpYy5lY3IuYXdzL25ldXJvbi9weXRvcmNoLXRyYWluaW5nLW5ldXJvbng6Mi4xLjItbmV1cm9ueC1weTMxMC1zZGsyLjE5LjAtdWJ1bnR1MjAuMDRcIixcbiAgICAgICAgKSxcbiAgICAgICAgbmV1cm9ueFZlcnNpb246IFwiMi4xOS4wXCIsXG4gICAgICAgIG5ldXJvbnhUcmFuc2Zvcm1lcnNWZXJzaW9uOiBcIjAuMTEuMzUxXCIgYXMgY29uc3QsXG4gICAgICB9O1xuICAgIGxldCBjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeCA9IGAke3Byb3BzLm1vZGVsLm1vZGVsSWR9L25ldXJvbngtJHtydW50aW1lLm5ldXJvbnhWZXJzaW9ufS90cCR7dHBEZWdyZWV9LW5wJHtuUG9zaXRpb25zfS1vcHQke29wdExldmVsfWA7XG4gICAgaWYgKHF1YW50RHR5cGUhISkge1xuICAgICAgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXggPSBgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0tcXVhbnQke3F1YW50RHR5cGV9YDtcbiAgICB9XG4gICAgcHJvcHMuYnVja2V0LmdyYW50UmVhZFdyaXRlKFxuICAgICAgY29tcHV0ZUVudmlyb25tZW50Lmluc3RhbmNlUm9sZSEsXG4gICAgICBgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0vKmAsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBpbGVTY3JpcHQgPSByZWFkRmlsZVN5bmMoXG4gICAgICBqb2luKF9fZGlybmFtZSwgXCIuLi9zY3JpcHRzL2NvbXBpbGUucHlcIiksXG4gICAgKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGpvYkRlZmluaXRpb24gPSBuZXcgYmF0Y2guRWNzSm9iRGVmaW5pdGlvbih0aGlzLCBcIkpvYkRlZmluaXRpb25cIiwge1xuICAgICAgY29udGFpbmVyOiBuZXcgYmF0Y2guRWNzRWMyQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDb250YWluZXJEZWZpbml0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBpbWFnZTogcnVudGltZS5pbWFnZSxcbiAgICAgICAgICAvLyBUaGUgZmxsb3dpbmcgY29tbWFuZCB3YXMgZXhlY3V0ZWQgb24gaW5mMi44eGxhcmdlXG4gICAgICAgICAgLy8gc2gtNS4yJCBmcmVlIC1iXG4gICAgICAgICAgLy8gXHRcdFx0dG90YWxcdFx0XHRcdFx0dXNlZFx0XHRcdGZyZWVcdFx0XHRcdFx0c2hhcmVkXHRidWZmL2NhY2hlXHRhdmFpbGFibGVcbiAgICAgICAgICAvLyBNZW06XHQxMzIyNjU3NjY5MTJcdDg2NjMyMDM4NFx0MTMwMzQxNzg1NjAwXHQ2Njc2NDhcdDEwNTc2NjA5MjhcdDEzMDUyOTE0ODkyOFxuICAgICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iYXRjaC9sYXRlc3QvdXNlcmd1aWRlL21lbW9yeS1tYW5hZ2VtZW50Lmh0bWxcbiAgICAgICAgICBtZW1vcnk6IFNpemUubWViaWJ5dGVzKFxuICAgICAgICAgICAgTWF0aC5jZWlsKGluc3RhbmNlVHlwZS5tZW1vcnkudG9NZWJpYnl0ZXMoKSAqIDAuOTUpLFxuICAgICAgICAgICksXG4gICAgICAgICAgY3B1OiBpbnN0YW5jZVR5cGUudkNwdSxcbiAgICAgICAgICBjb21tYW5kOiBbXG4gICAgICAgICAgICBgY2F0IDw8RU9GID4gY29tcGlsZS5weVxcbiR7Y29tcGlsZVNjcmlwdH1cXG5FT0ZcXG5gLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBydW50aW1lLm5ldXJvbnhUcmFuc2Zvcm1lcnNWZXJzaW9uXG4gICAgICAgICAgICAgICAgPyBcInBpcCBpbnN0YWxsIC1VIC0tZXh0cmEtaW5kZXgtdXJsIGh0dHBzOi8vcGlwLnJlcG9zLm5ldXJvbi5hbWF6b25hd3MuY29tIHRyYW5zZm9ybWVycy1uZXVyb254PT0kTkVVUk9OWF9UUkFOU0ZPUk1FUlNfVkVSU0lPTlwiXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIFwiY3VybCAtcyBodHRwczovL3BhY2thZ2VjbG91ZC5pby9pbnN0YWxsL3JlcG9zaXRvcmllcy9naXRodWIvZ2l0LWxmcy9zY3JpcHQuZGViLnNoIHwgYmFzaFwiLFxuICAgICAgICAgICAgICBcImFwdC1nZXQgaW5zdGFsbCBnaXQtbGZzXCIsXG4gICAgICAgICAgICAgIFwiZ2l0IGxmcyBpbnN0YWxsXCIsXG4gICAgICAgICAgICAgIGBnaXQgY2xvbmUgaHR0cHM6Ly9odWdnaW5nZmFjZS5jby8ke3Byb3BzLm1vZGVsLm1vZGVsSWR9IG1vZGVsYCxcbiAgICAgICAgICAgICAgXCJybSAtcmYgbW9kZWwvLmdpdFwiLFxuICAgICAgICAgICAgICBcInB5dGhvbiAuL2NvbXBpbGUucHlcIixcbiAgICAgICAgICAgICAgYGF3cyBzMyBzeW5jIC0tbm8tcHJvZ3Jlc3MgLi9tb2RlbCAke3Byb3BzLmJ1Y2tldC5zM1VybEZvck9iamVjdChgJHtjb21waWxlZEFydGlmYWN0UGF0aFByZWZpeH0vbW9kZWxgKX1gLFxuICAgICAgICAgICAgICBgYXdzIHMzIHN5bmMgLS1uby1wcm9ncmVzcyAuL2NvbXBpbGVkICR7cHJvcHMuYnVja2V0LnMzVXJsRm9yT2JqZWN0KGAke2NvbXBpbGVkQXJ0aWZhY3RQYXRoUHJlZml4fS9jb21waWxlZGApfWAsXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHYpID0+ICEhdilcbiAgICAgICAgICAgICAgLmpvaW4oXCIgJiYgXCIpLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgIE1PREVMX0lEOiBwcm9wcy5tb2RlbC5tb2RlbElkLFxuICAgICAgICAgICAgVFBfREVHUkVFOiB0cERlZ3JlZS50b1N0cmluZygpLFxuICAgICAgICAgICAgTl9QT1NJVElPTlM6IG5Qb3NpdGlvbnMudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIE9QVF9MRVZFTDogb3B0TGV2ZWwudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFFVQU5UX0RUWVBFOiBxdWFudER0eXBlPy50b1N0cmluZygpID8/IFwiXCIsXG4gICAgICAgICAgICBBUlRJRkFDVF9TM19VUkw6IHByb3BzLmJ1Y2tldC5zM1VybEZvck9iamVjdChcbiAgICAgICAgICAgICAgY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXgsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgTkVVUk9OWF9UUkFOU0ZPUk1FUlNfVkVSU0lPTjpcbiAgICAgICAgICAgICAgcnVudGltZS5uZXVyb254VHJhbnNmb3JtZXJzVmVyc2lvbiA/PyBcIlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgIH0pO1xuICAgIHRoaXMuY29ubmVjdEFjY2VsZXJhdG9yQ2hpcHMoam9iRGVmaW5pdGlvbiwgaW5zdGFuY2VUeXBlKTtcblxuICAgIGNvbnN0IGpvYlN1Ym1pdEZ1bmN0aW9uID0gbmV3IFNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsIFwiSm9iU3VibWl0RnVuY3Rpb25cIiwge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwicHJpdmF0ZS9hd2FpdC1jb21waWxlLWpvYlwiKSksXG4gICAgICBoYW5kbGVyOiBcImluZGV4Lm9uRXZlbnRcIixcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICB1dWlkOiBcIjEzNjFmNDY5LTVjOTItNGM0Ni05ZTExLTVkMWRiZjkyNWJhY1wiLFxuICAgIH0pO1xuICAgIGpvYkRlZmluaXRpb24uZ3JhbnRTdWJtaXRKb2Ioam9iU3VibWl0RnVuY3Rpb24sIGpvYlF1ZXVlKTtcbiAgICBjb25zdCBqb2JNb25pdG9yaW5nRnVuY3Rpb24gPSBuZXcgU2luZ2xldG9uRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJKb2JNb25pdG9yaW5nRnVuY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwicHJpdmF0ZS9hd2FpdC1jb21waWxlLWpvYlwiKSksXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaXNDb21wbGV0ZVwiLFxuICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18yMF9YLFxuICAgICAgICB1dWlkOiBcImRmMTZkYmE4LTVmNzctNDgwYy1hNmFkLWNmZGY3NGMzZGU2MlwiLFxuICAgICAgfSxcbiAgICApO1xuICAgIEdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIHJlc291cmNlQXJuczogW1wiKlwiXSxcbiAgICAgIGdyYW50ZWU6IGpvYk1vbml0b3JpbmdGdW5jdGlvbixcbiAgICAgIGFjdGlvbnM6IFtcImJhdGNoOkRlc2NyaWJlSm9ic1wiXSxcbiAgICB9KTtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCBcIkNvbXBpbGVKb2JQcm92aWRlclwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogam9iU3VibWl0RnVuY3Rpb24sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogam9iTW9uaXRvcmluZ0Z1bmN0aW9uLFxuICAgICAgcXVlcnlJbnRlcnZhbDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHRvdGFsVGltZW91dDogRHVyYXRpb24uaG91cnMoMSksXG4gICAgfSk7XG4gICAgY29uc3QgY29tcGlsZUpvYiA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCBcIkNvbXBpbGVKb2JcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpDb21waWxlSm9iXCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGpvYkRlZmluaXRpb25Bcm46IGpvYkRlZmluaXRpb24uam9iRGVmaW5pdGlvbkFybixcbiAgICAgICAgam9iUXVldWVBcm46IGpvYlF1ZXVlLmpvYlF1ZXVlQXJuLFxuICAgICAgICBhcnRpZmFjdFMzVXJsOiBwcm9wcy5idWNrZXQuczNVcmxGb3JPYmplY3QoY29tcGlsZWRBcnRpZmFjdFBhdGhQcmVmaXgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBpbGVkQXJ0aWZhY3RTM1VybCA9IGNvbXBpbGVKb2IuZ2V0QXR0U3RyaW5nKFwiQXJ0aWZhY3RTM1VybFwiKTtcbiAgfVxuXG4gIHByaXZhdGUgY29ubmVjdEFjY2VsZXJhdG9yQ2hpcHMoXG4gICAgam9iRGVmaW5pdGlvbjogYmF0Y2guRWNzSm9iRGVmaW5pdGlvbixcbiAgICBpbnN0YW5jZVR5cGU6IE5ldXJvbnhJbnN0YW5jZVR5cGUsXG4gICkge1xuICAgIHR5cGUgUGFzY2FsQ2FzZTxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICAgIFtQIGluIGtleW9mIFQgYXMgUCBleHRlbmRzIHN0cmluZyA/IENhcGl0YWxpemU8UD4gOiBuZXZlcl06IFRbUF07XG4gICAgfTtcbiAgICBjb25zdCBkZXZpY2VzID0gQXJyYXkuZnJvbSh7XG4gICAgICBsZW5ndGg6IGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLmNoaXBzLFxuICAgIH0pLm1hcChcbiAgICAgIChfLCBpbmRleCkgPT5cbiAgICAgICAgKHtcbiAgICAgICAgICBIb3N0UGF0aDogYC9kZXYvbmV1cm9uJHtpbmRleH1gLFxuICAgICAgICAgIENvbnRhaW5lclBhdGg6IGAvZGV2L25ldXJvbiR7aW5kZXh9YCxcbiAgICAgICAgICBQZXJtaXNzaW9uczogW1wicmVhZFwiLCBcIndyaXRlXCJdLFxuICAgICAgICB9KSBzYXRpc2ZpZXMgUGFzY2FsQ2FzZTxiYXRjaC5DZm5Kb2JEZWZpbml0aW9uLkRldmljZVByb3BlcnR5PixcbiAgICApO1xuICAgIGNvbnN0IGNmbkpvYkRlZmluaXRpb24gPSBqb2JEZWZpbml0aW9uLm5vZGVcbiAgICAgIC5kZWZhdWx0Q2hpbGQgYXMgYmF0Y2guQ2ZuSm9iRGVmaW5pdGlvbjtcbiAgICBjZm5Kb2JEZWZpbml0aW9uLmFkZFByb3BlcnR5T3ZlcnJpZGUoXG4gICAgICBcIkNvbnRhaW5lclByb3BlcnRpZXMuTGludXhQYXJhbWV0ZXJzLkRldmljZXNcIixcbiAgICAgIGRldmljZXMsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY1RwRGVncmVlKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMsIGNvbXBpbGVPcHRpb25zOiBDb21waWxlT3B0aW9ucykge1xuICAgIC8vIGNhc2Ugb2YgZmxvYXQxNlxuICAgIGNvbnN0IGJ5dGVzUGVyUGFyYW1ldGUgPSAxNiAvIDg7XG4gICAgLy8gbWVtb3J5ID0gYnl0ZXMgcGVyIHBhcmFtZXRlciAqIG51bWJlciBvZiBwYXJhbWV0ZXJzXG4gICAgbGV0IG1lbW9yeSA9IFNpemUuZ2liaWJ5dGVzKGJ5dGVzUGVyUGFyYW1ldGUgKiBwYXJhbWV0ZXJzLnRvQmlsaW9uKCkpO1xuICAgIHN3aXRjaCAoY29tcGlsZU9wdGlvbnMucXVhbnREdHlwZSkge1xuICAgICAgY2FzZSBRdWFudER0eXBlLlM4OlxuICAgICAgICBtZW1vcnkgPSBTaXplLmdpYmlieXRlcyhtZW1vcnkudG9HaWJpYnl0ZXMoKSAvIDIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgbmVyb254Q29yZU1lbW9yeSA9IFNpemUuZ2liaWJ5dGVzKDE2KTtcbiAgICBjb25zdCBtaW5pbXVtID0gTWF0aC5jZWlsKFxuICAgICAgbWVtb3J5LnRvR2liaWJ5dGVzKCkgLyBuZXJvbnhDb3JlTWVtb3J5LnRvR2liaWJ5dGVzKCksXG4gICAgKTtcblxuICAgIGNvbnN0IHRwRGVncmVlcyA9IFsxLCAyLCA0LCA4LCAyNF07XG4gICAgZm9yIChjb25zdCB0cERlZ3JlZSBvZiB0cERlZ3JlZXMpIHtcbiAgICAgIGlmIChtaW5pbXVtIDw9IHRwRGVncmVlKSB7XG4gICAgICAgIHJldHVybiB0cERlZ3JlZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJUaGlzIG1vZGVsIGlzIHRvbyBsYXJnZSwgSSBjYW4gbm90IHN1cHBvcnQgdGhpcyBtb2RlbCBjdXJyZW50IHZlcnNpb24uXCIsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW5zdGFuY2VUeXBlQnlUcERlZ3JlZSh0cERlZ3JlZTogbnVtYmVyKSB7XG4gICAgY29uc3QgaW5zdGFuY2VUeXBlcyA9IFtcbiAgICAgIE5ldXJvbnhJbnN0YW5jZVR5cGUuSU5GMl84WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzI0WExBUkdFLFxuICAgICAgTmV1cm9ueEluc3RhbmNlVHlwZS5JTkYyXzQ4WExBUkdFLFxuICAgIF07XG4gICAgZm9yIChjb25zdCBpbnN0YW5jZVR5cGUgb2YgaW5zdGFuY2VUeXBlcykge1xuICAgICAgaWYgKHRwRGVncmVlIDw9IGluc3RhbmNlVHlwZS5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3Jlcykge1xuICAgICAgICByZXR1cm4gaW5zdGFuY2VUeXBlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlRoaXMgbW9kZWwgaXMgdG9vIGxhcmdlLCBJIGNhbiBub3Qgc3VwcG9ydCB0aGlzIG1vZGVsIGN1cnJlbnQgdmVyc2lvbi5cIixcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -14,7 +14,7 @@ class Inferentia2Chips {
|
|
|
14
14
|
}
|
|
15
15
|
exports.Inferentia2Chips = Inferentia2Chips;
|
|
16
16
|
_a = JSII_RTTI_SYMBOL_1;
|
|
17
|
-
Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.
|
|
17
|
+
Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.1" };
|
|
18
18
|
class NeuronxInstanceType {
|
|
19
19
|
constructor(instanceType, vCpu, memory, acceleratorChips) {
|
|
20
20
|
this.instanceType = instanceType;
|
|
@@ -32,7 +32,7 @@ class NeuronxInstanceType {
|
|
|
32
32
|
}
|
|
33
33
|
exports.NeuronxInstanceType = NeuronxInstanceType;
|
|
34
34
|
_b = JSII_RTTI_SYMBOL_1;
|
|
35
|
-
NeuronxInstanceType[_b] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.
|
|
35
|
+
NeuronxInstanceType[_b] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.1" };
|
|
36
36
|
/**
|
|
37
37
|
* ml.inf2.xlarge
|
|
38
38
|
*/
|
package/package.json
CHANGED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from transformers_neuronx import NeuronAutoModelForCausalLM, NeuronConfig, QuantizationConfig
|
|
3
|
+
|
|
4
|
+
model_path = "./model"
|
|
5
|
+
batch_size = 1
|
|
6
|
+
tp_degree = int(os.environ['TP_DEGREE'])
|
|
7
|
+
amp = "bf16"
|
|
8
|
+
quant_dtype = os.getenv('QUANT_DTYPE')
|
|
9
|
+
n_positions = int(os.environ['N_POSITIONS'])
|
|
10
|
+
opt_level = int(os.getenv('OPT_LEVEL', "2"))
|
|
11
|
+
|
|
12
|
+
# compile the model
|
|
13
|
+
print("loading the model")
|
|
14
|
+
neuron_config = NeuronConfig(
|
|
15
|
+
quant=QuantizationConfig(quant_dtype=quant_dtype, dequant_dtype='bf16') if quant_dtype is not None and quant_dtype != '' else None,
|
|
16
|
+
)
|
|
17
|
+
os.environ['NEURON_CC_FLAGS'] = f"--enable-saturate-infinity --enable-mixed-precision-accumulation --optlevel {opt_level}"
|
|
18
|
+
neuron_model = NeuronAutoModelForCausalLM.from_pretrained(
|
|
19
|
+
model_path,
|
|
20
|
+
batch_size=batch_size, # Batch size must be determined prior to inference time.
|
|
21
|
+
tp_degree=tp_degree, # Tensor Parallelism degree. Controls the number of NeuronCores to execute on
|
|
22
|
+
amp=amp, # This automatically casts the weights to the specified dtype.
|
|
23
|
+
n_positions=n_positions, # Sequence length. This should be atleast as large as the sum of expected input and output tokens.
|
|
24
|
+
neuron_config=neuron_config
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
print("compiling the model")
|
|
28
|
+
neuron_model.to_neuron()
|
|
29
|
+
|
|
30
|
+
print("saving the compiled model")
|
|
31
|
+
neuron_model.save('compiled') # can be copied and used on a different neuron instance
|