UNPKG

aws-cdk-neuronx-patterns

Version:
128 lines 15.2 kB
"use strict"; var _a, _b, _c; Object.defineProperty(exports, "__esModule", { value: true }); exports.NeuronxInstanceType = exports.Trainium1Chips = exports.Inferentia2Chips = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const ec2 = require("aws-cdk-lib/aws-ec2"); class Inferentia2Chips { constructor(chips) { this.chips = chips; this.neuronxCores = chips * 2; this.acceleratorMemory = aws_cdk_lib_1.Size.gibibytes(16 * this.neuronxCores); } } exports.Inferentia2Chips = Inferentia2Chips; _a = JSII_RTTI_SYMBOL_1; Inferentia2Chips[_a] = { fqn: "aws-cdk-neuronx-patterns.Inferentia2Chips", version: "0.0.23" }; class Trainium1Chips { constructor(chips) { this.chips = chips; this.neuronxCores = chips * 2; this.acceleratorMemory = aws_cdk_lib_1.Size.gibibytes(16 * this.neuronxCores); } } exports.Trainium1Chips = Trainium1Chips; _b = JSII_RTTI_SYMBOL_1; Trainium1Chips[_b] = { fqn: "aws-cdk-neuronx-patterns.Trainium1Chips", version: "0.0.23" }; class NeuronxInstanceTypeBase { constructor(props) { this.instanceType = props.instanceType; this.vCpu = props.vCpu; this.memory = props.memory; this.acceleratorChips = props.acceleratorChips; } /** * Return the instance type as a string * @returns The instance type as a string */ toString() { return this.instanceType.toString(); } } class Inferentia2InstanceType extends NeuronxInstanceTypeBase { get supportedTensorParallelism() { return [1, 2, 4, 8, 24].filter((tp) => tp <= this.acceleratorChips.neuronxCores); } constructor(props) { super({ instanceType: props.instanceType, vCpu: props.vCpu, memory: props.memory, acceleratorChips: new Inferentia2Chips(props.chips), }); } } class Trainium1InstanceType extends NeuronxInstanceTypeBase { get supportedTensorParallelism() { return [1, 2, 8, 16, 32].filter((tp) => tp <= this.acceleratorChips.neuronxCores); } constructor(props) { super({ instanceType: props.instanceType, vCpu: props.vCpu, memory: props.memory, acceleratorChips: new Trainium1Chips(props.chips), }); } } class NeuronxInstanceType { } exports.NeuronxInstanceType = NeuronxInstanceType; _c = JSII_RTTI_SYMBOL_1; NeuronxInstanceType[_c] = { fqn: "aws-cdk-neuronx-patterns.NeuronxInstanceType", version: "0.0.23" }; /** * inf2.xlarge */ NeuronxInstanceType.INF2_XLARGE = new Inferentia2InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE), vCpu: 4, memory: aws_cdk_lib_1.Size.gibibytes(16), chips: 1, }); /** * inf2.8xlarge */ NeuronxInstanceType.INF2_8XLARGE = new Inferentia2InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE8), vCpu: 32, memory: aws_cdk_lib_1.Size.gibibytes(128), chips: 1, }); /** * inf2.24xlarge */ NeuronxInstanceType.INF2_24XLARGE = new Inferentia2InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE24), vCpu: 96, memory: aws_cdk_lib_1.Size.gibibytes(384), chips: 6, }); /** * inf2.48xlarge */ NeuronxInstanceType.INF2_48XLARGE = new Inferentia2InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.INF2, ec2.InstanceSize.XLARGE48), vCpu: 192, memory: aws_cdk_lib_1.Size.gibibytes(768), chips: 12, }); /** * trn1.2xlarge */ NeuronxInstanceType.TRN1_2XLARGE = new Trainium1InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.TRN1, ec2.InstanceSize.XLARGE2), vCpu: 8, memory: aws_cdk_lib_1.Size.gibibytes(32), chips: 1, }); /** * trn1.32xlarge */ NeuronxInstanceType.TRN1_32XLARGE = new Trainium1InstanceType({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.TRN1, ec2.InstanceSize.XLARGE32), vCpu: 128, memory: aws_cdk_lib_1.Size.gibibytes(512), chips: 16, }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV1cm9ueC1pbnN0YW5jZS10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jhc2UvbmV1cm9ueC9uZXVyb254LWluc3RhbmNlLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBbUM7QUFDbkMsMkNBQTJDO0FBVzNDLE1BQWEsZ0JBQWdCO0lBRzNCLFlBQXFCLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsa0JBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDOztBQU5ILDRDQU9DOzs7QUFFRCxNQUFhLGNBQWM7SUFHekIsWUFBcUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7O0FBTkgsd0NBT0M7OztBQVNELE1BQWUsdUJBQXVCO0lBTXBDLFlBQVksS0FLWDtRQUNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFF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WUFBWSxDQUFDLFFBQVEsQ0FDMUI7SUFDRCxJQUFJLEVBQUUsR0FBRztJQUNULE1BQU0sRUFBRSxrQkFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDM0IsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDLENBQUM7QUFDTDs7R0FFRztBQUNvQixnQ0FBWSxHQUNqQyxJQUFJLHFCQUFxQixDQUFDO0lBQ3hCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDL0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ3RCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUN6QjtJQUNELElBQUksRUFBRSxDQUFDO0lBQ1AsTUFBTSxFQUFFLGtCQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMxQixLQUFLLEVBQUUsQ0FBQztDQUNULENBQUMsQ0FBQztBQUNMOztHQUVHO0FBQ29CLGlDQUFhLEdBQ2xDLElBQUkscUJBQXFCLENBQUM7SUFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFDdEIsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQzFCO0lBQ0QsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsa0JBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzNCLEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IGNoaXBzOiBudW1iZXI7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbn1cblxuZXhwb3J0IGNsYXNzIEluZmVyZW50aWEyQ2hpcHMgaW1wbGVtZW50cyBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2hpcHM6IG51bWJlcikge1xuICAgIHRoaXMubmV1cm9ueENvcmVzID0gY2hpcHMgKiAyO1xuICAgIHRoaXMuYWNjZWxlcmF0b3JNZW1vcnkgPSBTaXplLmdpYmlieXRlcygxNiAqIHRoaXMubmV1cm9ueENvcmVzKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhaW5pdW0xQ2hpcHMgaW1wbGVtZW50cyBJQWNjZWxlcmF0b3JDaGlwcyB7XG4gIHJlYWRvbmx5IG5ldXJvbnhDb3JlczogbnVtYmVyO1xuICByZWFkb25seSBhY2NlbGVyYXRvck1lbW9yeTogU2l6ZTtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2hpcHM6IG51bWJlcikge1xuICAgIHRoaXMubmV1cm9ueENvcmVzID0gY2hpcHMgKiAyO1xuICAgIHRoaXMuYWNjZWxlcmF0b3JNZW1vcnkgPSBTaXplLmdpYmlieXRlcygxNiAqIHRoaXMubmV1cm9ueENvcmVzKTtcbiAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBJTmV1cm9ueEluc3RhbmNlVHlwZSB7XG4gIHJlYWRvbmx5IHN1cHBvcnRlZFRlbnNvclBhcmFsbGVsaXNtOiBudW1iZXJbXTtcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB2Q3B1OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1lbW9yeTogU2l6ZTtcbiAgcmVhZG9ubHkgYWNjZWxlcmF0b3JDaGlwczogSUFjY2VsZXJhdG9yQ2hpcHM7XG59XG5cbmFic3RyYWN0IGNsYXNzIE5ldXJvbnhJbnN0YW5jZVR5cGVCYXNlIGltcGxlbWVudHMgSU5ldXJvbnhJbnN0YW5jZVR5cGUge1xuICByZWFkb25seSBhY2NlbGVyYXRvckNoaXBzOiBJQWNjZWxlcmF0b3JDaGlwcztcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB2Q3B1OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1lbW9yeTogU2l6ZTtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgc3VwcG9ydGVkVGVuc29yUGFyYWxsZWxpc206IG51bWJlcltdO1xuICBjb25zdHJ1Y3Rvcihwcm9wczoge1xuICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZTtcbiAgICB2Q3B1OiBudW1iZXI7XG4gICAgbWVtb3J5OiBTaXplO1xuICAgIGFjY2VsZXJhdG9yQ2hpcHM6IElBY2NlbGVyYXRvckNoaXBzO1xuICB9KSB7XG4gICAgdGhpcy5pbnN0YW5jZVR5cGUgPSBwcm9wcy5pbnN0YW5jZVR5cGU7XG4gICAgdGhpcy52Q3B1ID0gcHJvcHMudkNwdTtcbiAgICB0aGlzLm1lbW9yeSA9IHByb3BzLm1lbW9yeTtcbiAgICB0aGlzLmFjY2VsZXJhdG9yQ2hpcHMgPSBwcm9wcy5hY2NlbGVyYXRvckNoaXBzO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGluc3RhbmNlIHR5cGUgYXMgYSBzdHJpbmdcbiAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIHR5cGUgYXMgYSBzdHJpbmdcbiAgICovXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNlVHlwZS50b1N0cmluZygpO1xuICB9XG59XG5cbmNsYXNzIEluZmVyZW50aWEySW5zdGFuY2VUeXBlIGV4dGVuZHMgTmV1cm9ueEluc3RhbmNlVHlwZUJhc2Uge1xuICBnZXQgc3VwcG9ydGVkVGVuc29yUGFyYWxsZWxpc20oKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBbMSwgMiwgNCwgOCwgMjRdLmZpbHRlcihcbiAgICAgICh0cCkgPT4gdHAgPD0gdGhpcy5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyxcbiAgICApO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByb3BzOiB7XG4gICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICAgIHZDcHU6IG51bWJlcjtcbiAgICBtZW1vcnk6IFNpemU7XG4gICAgY2hpcHM6IG51bWJlcjtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgdkNwdTogcHJvcHMudkNwdSxcbiAgICAgIG1lbW9yeTogcHJvcHMubWVtb3J5LFxuICAgICAgYWNjZWxlcmF0b3JDaGlwczogbmV3IEluZmVyZW50aWEyQ2hpcHMocHJvcHMuY2hpcHMpLFxuICAgIH0pO1xuICB9XG59XG5jbGFzcyBUcmFpbml1bTFJbnN0YW5jZVR5cGUgZXh0ZW5kcyBOZXVyb254SW5zdGFuY2VUeXBlQmFzZSB7XG4gIGdldCBzdXBwb3J0ZWRUZW5zb3JQYXJhbGxlbGlzbSgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIFsxLCAyLCA4LCAxNiwgMzJdLmZpbHRlcihcbiAgICAgICh0cCkgPT4gdHAgPD0gdGhpcy5hY2NlbGVyYXRvckNoaXBzLm5ldXJvbnhDb3JlcyxcbiAgICApO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByb3BzOiB7XG4gICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuICAgIHZDcHU6IG51bWJlcjtcbiAgICBtZW1vcnk6IFNpemU7XG4gICAgY2hpcHM6IG51bWJlcjtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgdkNwdTogcHJvcHMudkNwdSxcbiAgICAgIG1lbW9yeTogcHJvcHMubWVtb3J5LFxuICAgICAgYWNjZWxlcmF0b3JDaGlwczogbmV3IFRyYWluaXVtMUNoaXBzKHByb3BzLmNoaXBzKSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmV1cm9ueEluc3RhbmNlVHlwZSB7XG4gIC8qKlxuICAgKiBpbmYyLnhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyX1hMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBJbmZlcmVudGlhMkluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLklORjIsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFLFxuICAgICAgKSxcbiAgICAgIHZDcHU6IDQsXG4gICAgICBtZW1vcnk6IFNpemUuZ2liaWJ5dGVzKDE2KSxcbiAgICAgIGNoaXBzOiAxLFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi44eGxhcmdlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElORjJfOFhMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBJbmZlcmVudGlhMkluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLklORjIsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFOCxcbiAgICAgICksXG4gICAgICB2Q3B1OiAzMixcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoMTI4KSxcbiAgICAgIGNoaXBzOiAxLFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi4yNHhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyXzI0WExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IEluZmVyZW50aWEySW5zdGFuY2VUeXBlKHtcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuSU5GMixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5YTEFSR0UyNCxcbiAgICAgICksXG4gICAgICB2Q3B1OiA5NixcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoMzg0KSxcbiAgICAgIGNoaXBzOiA2LFxuICAgIH0pO1xuICAvKipcbiAgICogaW5mMi40OHhsYXJnZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTkYyXzQ4WExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IEluZmVyZW50aWEySW5zdGFuY2VUeXBlKHtcbiAgICAgIGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZS5vZihcbiAgICAgICAgZWMyLkluc3RhbmNlQ2xhc3MuSU5GMixcbiAgICAgICAgZWMyLkluc3RhbmNlU2l6ZS5YTEFSR0U0OCxcbiAgICAgICksXG4gICAgICB2Q3B1OiAxOTIsXG4gICAgICBtZW1vcnk6IFNpemUuZ2liaWJ5dGVzKDc2OCksXG4gICAgICBjaGlwczogMTIsXG4gICAgfSk7XG4gIC8qKlxuICAgKiB0cm4xLjJ4bGFyZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJOMV8yWExBUkdFOiBJTmV1cm9ueEluc3RhbmNlVHlwZSA9XG4gICAgbmV3IFRyYWluaXVtMUluc3RhbmNlVHlwZSh7XG4gICAgICBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUub2YoXG4gICAgICAgIGVjMi5JbnN0YW5jZUNsYXNzLlRSTjEsXG4gICAgICAgIGVjMi5JbnN0YW5jZVNpemUuWExBUkdFMixcbiAgICAgICksXG4gICAgICB2Q3B1OiA4LFxuICAgICAgbWVtb3J5OiBTaXplLmdpYmlieXRlcygzMiksXG4gICAgICBjaGlwczogMSxcbiAgICB9KTtcbiAgLyoqXG4gICAqIHRybjEuMzJ4bGFyZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJOMV8zMlhMQVJHRTogSU5ldXJvbnhJbnN0YW5jZVR5cGUgPVxuICAgIG5ldyBUcmFpbml1bTFJbnN0YW5jZVR5cGUoe1xuICAgICAgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlLm9mKFxuICAgICAgICBlYzIuSW5zdGFuY2VDbGFzcy5UUk4xLFxuICAgICAgICBlYzIuSW5zdGFuY2VTaXplLlhMQVJHRTMyLFxuICAgICAgKSxcbiAgICAgIHZDcHU6IDEyOCxcbiAgICAgIG1lbW9yeTogU2l6ZS5naWJpYnl0ZXMoNTEyKSxcbiAgICAgIGNoaXBzOiAxNixcbiAgICB9KTtcbn1cbiJdfQ==