@genai-fi/nanogpt 0.20.0 → 0.20.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/dist/BaseTokeniser-DSg9zcYq.js +221 -0
- package/dist/DatasetBuilder-DgURD85T.js +712 -0
- package/dist/Generator.d.ts +82 -0
- package/dist/Generator.js +2 -0
- package/dist/RealDiv-DBu0FQqT.js +362 -0
- package/dist/Reshape-CABOPB9d.js +94 -0
- package/dist/Reshape-DqO3r8BC.js +17 -0
- package/dist/TeachableLLM.d.ts +70 -0
- package/dist/TeachableLLM.js +2 -0
- package/dist/Trainer.d.ts +43 -0
- package/dist/Trainer.js +2 -0
- package/dist/backend.d.ts +2 -0
- package/dist/backend.js +13 -0
- package/dist/backend_util-Cg-roD1p.js +399 -0
- package/dist/binary_op_util-CrYk9LXL.js +103 -0
- package/dist/checks/appendCache.d.ts +1 -0
- package/dist/checks/appendCache.js +55 -0
- package/dist/checks/attentionMask.d.ts +1 -0
- package/dist/checks/attentionMask.js +56 -0
- package/dist/checks/check.d.ts +9 -0
- package/dist/checks/check.js +32 -0
- package/dist/checks/gelu.d.ts +1 -0
- package/dist/checks/gelu.js +46 -0
- package/dist/checks/index.d.ts +26 -0
- package/dist/checks/index.js +28 -0
- package/dist/checks/matMulGelu.d.ts +1 -0
- package/dist/checks/matMulGelu.js +84 -0
- package/dist/checks/normRMS.d.ts +1 -0
- package/dist/checks/normRMS.js +28 -0
- package/dist/checks/normRMSGrad.d.ts +1 -0
- package/dist/checks/normRMSGrad.js +22 -0
- package/dist/checks/packUnpack.d.ts +1 -0
- package/dist/checks/packUnpack.js +46 -0
- package/dist/checks/qkv.d.ts +1 -0
- package/dist/checks/qkv.js +34 -0
- package/dist/checks/rope.d.ts +1 -0
- package/dist/checks/rope.js +30 -0
- package/dist/checks/weights.d.ts +14 -0
- package/dist/checks/weights.js +27 -0
- package/dist/chunk-BPntVaq0.js +23 -0
- package/dist/complex_util-CkazZsaH.js +60 -0
- package/dist/concat_util-CWDZCBlA.js +19 -0
- package/dist/data/docx.d.ts +2 -0
- package/dist/data/docx.js +3046 -0
- package/dist/data/pdf.d.ts +2 -0
- package/dist/data/pdf.js +17 -0
- package/dist/data/textLoader.d.ts +7 -0
- package/dist/data/textLoader.js +613 -0
- package/dist/dist-BewPQWjc.js +7572 -0
- package/dist/dist-DVmq73nz.js +8775 -0
- package/dist/dist-DXwIvKxl.js +896 -0
- package/dist/dist-VEU5mfO0.js +7545 -0
- package/dist/gelu-Bf1HW1RY.js +27 -0
- package/dist/gpgpu_math-DvLcCH6u.js +1612 -0
- package/dist/inference/types.d.ts +16 -0
- package/dist/inference/types.js +0 -0
- package/dist/kernel_funcs_utils-HiXOOx3f.js +229 -0
- package/dist/layers/BaseLayer.d.ts +44 -0
- package/dist/layers/BaseLayer.js +76 -0
- package/dist/layers/CausalSelfAttention.d.ts +39 -0
- package/dist/layers/CausalSelfAttention.js +99 -0
- package/dist/layers/LoRA.d.ts +14 -0
- package/dist/layers/LoRA.js +48 -0
- package/dist/layers/MLP.d.ts +17 -0
- package/dist/layers/MLP.js +34 -0
- package/dist/layers/PositionEmbedding.d.ts +8 -0
- package/dist/layers/PositionEmbedding.js +27 -0
- package/dist/layers/RMSNorm.d.ts +12 -0
- package/dist/layers/RMSNorm.js +20 -0
- package/dist/layers/RoPECache.d.ts +18 -0
- package/dist/layers/RoPECache.js +337 -0
- package/dist/layers/TiedEmbedding.d.ts +13 -0
- package/dist/layers/TiedEmbedding.js +32 -0
- package/dist/layers/TransformerBlock.d.ts +27 -0
- package/dist/layers/TransformerBlock.js +51 -0
- package/dist/layers/WeightStore.d.ts +20 -0
- package/dist/layers/WeightStore.js +69 -0
- package/dist/loader/load.d.ts +6 -0
- package/dist/loader/load.js +2 -0
- package/dist/loader/loadHF.d.ts +8 -0
- package/dist/loader/loadHF.js +2 -0
- package/dist/loader/loadTransformers.d.ts +4 -0
- package/dist/loader/loadTransformers.js +2 -0
- package/dist/loader/loadZipMeta.d.ts +3 -0
- package/dist/loader/loadZipMeta.js +16 -0
- package/dist/loader/newZipLoad.d.ts +3 -0
- package/dist/loader/newZipLoad.js +2 -0
- package/dist/loader/oldZipLoad.d.ts +9 -0
- package/dist/loader/oldZipLoad.js +2 -0
- package/dist/loader/save.d.ts +16 -0
- package/dist/loader/save.js +2 -0
- package/dist/loader/types.d.ts +68 -0
- package/dist/loader/types.js +0 -0
- package/dist/main-CPjeMv0G.js +13500 -0
- package/dist/main.d.ts +50 -0
- package/dist/main.js +16 -0
- package/dist/matMul16-BNfZSnNM.js +81 -0
- package/dist/matMulGelu-CPTntosE.js +162 -0
- package/dist/models/NanoGPTV1.d.ts +16 -0
- package/dist/models/NanoGPTV1.js +2 -0
- package/dist/models/NanoGPTV2.d.ts +16 -0
- package/dist/models/NanoGPTV2.js +2 -0
- package/dist/models/config.d.ts +27 -0
- package/dist/models/config.js +37 -0
- package/dist/models/factory.d.ts +3 -0
- package/dist/models/factory.js +2 -0
- package/dist/models/model.d.ts +44 -0
- package/dist/models/model.js +2 -0
- package/dist/ops/adamAdjust.d.ts +2 -0
- package/dist/ops/adamAdjust.js +18 -0
- package/dist/ops/adamMoments.d.ts +2 -0
- package/dist/ops/adamMoments.js +16 -0
- package/dist/ops/add16.d.ts +2 -0
- package/dist/ops/add16.js +12 -0
- package/dist/ops/appendCache.d.ts +2 -0
- package/dist/ops/appendCache.js +25 -0
- package/dist/ops/attentionMask.d.ts +2 -0
- package/dist/ops/attentionMask.js +16 -0
- package/dist/ops/concat16.d.ts +2 -0
- package/dist/ops/concat16.js +8 -0
- package/dist/ops/cpu/adamAdjust.d.ts +1 -0
- package/dist/ops/cpu/adamAdjust.js +16 -0
- package/dist/ops/cpu/adamMoments.d.ts +1 -0
- package/dist/ops/cpu/adamMoments.js +16 -0
- package/dist/ops/cpu/appendCache.d.ts +1 -0
- package/dist/ops/cpu/appendCache.js +65 -0
- package/dist/ops/cpu/attentionMask.d.ts +1 -0
- package/dist/ops/cpu/attentionMask.js +16 -0
- package/dist/ops/cpu/fusedSoftmax.d.ts +9 -0
- package/dist/ops/cpu/fusedSoftmax.js +22 -0
- package/dist/ops/cpu/gatherSub.d.ts +1 -0
- package/dist/ops/cpu/gatherSub.js +12 -0
- package/dist/ops/cpu/gelu.d.ts +1 -0
- package/dist/ops/cpu/gelu.js +36 -0
- package/dist/ops/cpu/matMul16.d.ts +1 -0
- package/dist/ops/cpu/matMul16.js +14 -0
- package/dist/ops/cpu/matMulGelu.d.ts +1 -0
- package/dist/ops/cpu/matMulGelu.js +41 -0
- package/dist/ops/cpu/matMulMul.d.ts +1 -0
- package/dist/ops/cpu/matMulMul.js +20 -0
- package/dist/ops/cpu/mulDropout.d.ts +1 -0
- package/dist/ops/cpu/mulDropout.js +20 -0
- package/dist/ops/cpu/normRMS.d.ts +1 -0
- package/dist/ops/cpu/normRMS.js +35 -0
- package/dist/ops/cpu/qkv.d.ts +5 -0
- package/dist/ops/cpu/qkv.js +73 -0
- package/dist/ops/cpu/rope.d.ts +6 -0
- package/dist/ops/cpu/rope.js +81 -0
- package/dist/ops/cpu/scatterSub.d.ts +1 -0
- package/dist/ops/cpu/scatterSub.js +12 -0
- package/dist/ops/dot16.d.ts +2 -0
- package/dist/ops/dot16.js +29 -0
- package/dist/ops/dropout.d.ts +2 -0
- package/dist/ops/dropout.js +11 -0
- package/dist/ops/dropout16.d.ts +2 -0
- package/dist/ops/dropout16.js +22 -0
- package/dist/ops/gatherSub.d.ts +2 -0
- package/dist/ops/gatherSub.js +13 -0
- package/dist/ops/gelu.d.ts +3 -0
- package/dist/ops/gelu.js +2 -0
- package/dist/ops/globalNorm.d.ts +2 -0
- package/dist/ops/globalNorm.js +19 -0
- package/dist/ops/grads/add16.d.ts +1 -0
- package/dist/ops/grads/add16.js +27 -0
- package/dist/ops/grads/attentionMask.d.ts +1 -0
- package/dist/ops/grads/attentionMask.js +26 -0
- package/dist/ops/grads/dropout16.d.ts +1 -0
- package/dist/ops/grads/dropout16.js +1 -0
- package/dist/ops/grads/gelu.d.ts +2 -0
- package/dist/ops/grads/gelu.js +2 -0
- package/dist/ops/grads/matMul16.d.ts +2 -0
- package/dist/ops/grads/matMul16.js +2 -0
- package/dist/ops/grads/matMulGelu.d.ts +1 -0
- package/dist/ops/grads/matMulGelu.js +22 -0
- package/dist/ops/grads/mul16.d.ts +1 -0
- package/dist/ops/grads/mul16.js +1 -0
- package/dist/ops/grads/normRMS.d.ts +3 -0
- package/dist/ops/grads/normRMS.js +37 -0
- package/dist/ops/grads/pack16.d.ts +2 -0
- package/dist/ops/grads/pack16.js +2 -0
- package/dist/ops/grads/qkv.d.ts +3 -0
- package/dist/ops/grads/qkv.js +46 -0
- package/dist/ops/grads/rope.d.ts +2 -0
- package/dist/ops/grads/rope.js +2 -0
- package/dist/ops/grads/softmax16.d.ts +2 -0
- package/dist/ops/grads/softmax16.js +23 -0
- package/dist/ops/grads/unpack16.d.ts +2 -0
- package/dist/ops/grads/unpack16.js +2 -0
- package/dist/ops/grads/utils.d.ts +4 -0
- package/dist/ops/grads/utils.js +12 -0
- package/dist/ops/log.d.ts +0 -0
- package/dist/ops/log.js +1 -0
- package/dist/ops/matMul16.d.ts +15 -0
- package/dist/ops/matMul16.js +2 -0
- package/dist/ops/matMulGelu.d.ts +3 -0
- package/dist/ops/matMulGelu.js +20 -0
- package/dist/ops/matMulMul.d.ts +2 -0
- package/dist/ops/matMulMul.js +16 -0
- package/dist/ops/mul16.d.ts +2 -0
- package/dist/ops/mul16.js +43 -0
- package/dist/ops/mulDrop.d.ts +2 -0
- package/dist/ops/mulDrop.js +15 -0
- package/dist/ops/normRMS.d.ts +2 -0
- package/dist/ops/normRMS.js +22 -0
- package/dist/ops/pack16.d.ts +2 -0
- package/dist/ops/pack16.js +2 -0
- package/dist/ops/qkv.d.ts +2 -0
- package/dist/ops/qkv.js +16 -0
- package/dist/ops/reshape16.d.ts +2 -0
- package/dist/ops/reshape16.js +33 -0
- package/dist/ops/rope.d.ts +3 -0
- package/dist/ops/rope.js +2 -0
- package/dist/ops/scatterSub.d.ts +2 -0
- package/dist/ops/scatterSub.js +13 -0
- package/dist/ops/slice16.d.ts +2 -0
- package/dist/ops/slice16.js +11 -0
- package/dist/ops/softmax16.d.ts +2 -0
- package/dist/ops/softmax16.js +9 -0
- package/dist/ops/sub16.d.ts +2 -0
- package/dist/ops/sub16.js +11 -0
- package/dist/ops/sum16.d.ts +2 -0
- package/dist/ops/sum16.js +13 -0
- package/dist/ops/transpose16.d.ts +3 -0
- package/dist/ops/transpose16.js +32 -0
- package/dist/ops/unpack16.d.ts +2 -0
- package/dist/ops/unpack16.js +2 -0
- package/dist/ops/webgl/adamAdjust.d.ts +1 -0
- package/dist/ops/webgl/adamAdjust.js +82 -0
- package/dist/ops/webgl/adamMoments.d.ts +1 -0
- package/dist/ops/webgl/adamMoments.js +44 -0
- package/dist/ops/webgl/appendCache.d.ts +1 -0
- package/dist/ops/webgl/appendCache.js +53 -0
- package/dist/ops/webgl/attentionMask.d.ts +1 -0
- package/dist/ops/webgl/attentionMask.js +64 -0
- package/dist/ops/webgl/dropout16.d.ts +1 -0
- package/dist/ops/webgl/dropout16.js +12 -0
- package/dist/ops/webgl/fusedSoftmax.d.ts +11 -0
- package/dist/ops/webgl/fusedSoftmax.js +70 -0
- package/dist/ops/webgl/gatherSub.d.ts +1 -0
- package/dist/ops/webgl/gatherSub.js +28 -0
- package/dist/ops/webgl/gelu.d.ts +2 -0
- package/dist/ops/webgl/gelu.js +48 -0
- package/dist/ops/webgl/log.d.ts +17 -0
- package/dist/ops/webgl/log.js +14 -0
- package/dist/ops/webgl/matMul16.d.ts +1 -0
- package/dist/ops/webgl/matMul16.js +37 -0
- package/dist/ops/webgl/matMulGelu.d.ts +21 -0
- package/dist/ops/webgl/matMulGelu.js +2 -0
- package/dist/ops/webgl/matMulMul.d.ts +14 -0
- package/dist/ops/webgl/matMulMul.js +24 -0
- package/dist/ops/webgl/mulDropout.d.ts +1 -0
- package/dist/ops/webgl/mulDropout.js +32 -0
- package/dist/ops/webgl/normRMS.d.ts +1 -0
- package/dist/ops/webgl/normRMS.js +114 -0
- package/dist/ops/webgl/qkv.d.ts +1 -0
- package/dist/ops/webgl/qkv.js +54 -0
- package/dist/ops/webgl/rope.d.ts +1 -0
- package/dist/ops/webgl/rope.js +72 -0
- package/dist/ops/webgl/scatterSub.d.ts +1 -0
- package/dist/ops/webgl/scatterSub.js +28 -0
- package/dist/ops/webgpu/adamAdjust.d.ts +1 -0
- package/dist/ops/webgpu/adamAdjust.js +77 -0
- package/dist/ops/webgpu/adamMoments.d.ts +1 -0
- package/dist/ops/webgpu/adamMoments.js +76 -0
- package/dist/ops/webgpu/add16.d.ts +1 -0
- package/dist/ops/webgpu/add16.js +14 -0
- package/dist/ops/webgpu/appendCache.d.ts +1 -0
- package/dist/ops/webgpu/appendCache.js +130 -0
- package/dist/ops/webgpu/attentionMask.d.ts +1 -0
- package/dist/ops/webgpu/attentionMask.js +42 -0
- package/dist/ops/webgpu/attentionMask32_program.d.ts +19 -0
- package/dist/ops/webgpu/attentionMask32_program.js +62 -0
- package/dist/ops/webgpu/clipScale.d.ts +1 -0
- package/dist/ops/webgpu/clipScale.js +45 -0
- package/dist/ops/webgpu/concat16.d.ts +19 -0
- package/dist/ops/webgpu/concat16.js +111 -0
- package/dist/ops/webgpu/dropout16.d.ts +1 -0
- package/dist/ops/webgpu/dropout16.js +59 -0
- package/dist/ops/webgpu/gatherSub.d.ts +1 -0
- package/dist/ops/webgpu/gatherSub.js +52 -0
- package/dist/ops/webgpu/gelu.d.ts +14 -0
- package/dist/ops/webgpu/gelu.js +147 -0
- package/dist/ops/webgpu/index.d.ts +0 -0
- package/dist/ops/webgpu/index.js +26 -0
- package/dist/ops/webgpu/matMul16.d.ts +1 -0
- package/dist/ops/webgpu/matMul16.js +70 -0
- package/dist/ops/webgpu/matMul16_program.d.ts +42 -0
- package/dist/ops/webgpu/matMul16_program.js +303 -0
- package/dist/ops/webgpu/mul16.d.ts +1 -0
- package/dist/ops/webgpu/mul16.js +14 -0
- package/dist/ops/webgpu/norm2.d.ts +1 -0
- package/dist/ops/webgpu/norm2.js +46 -0
- package/dist/ops/webgpu/normRMS.d.ts +1 -0
- package/dist/ops/webgpu/normRMS.js +26 -0
- package/dist/ops/webgpu/normRMS16_program.d.ts +10 -0
- package/dist/ops/webgpu/normRMS16_program.js +28 -0
- package/dist/ops/webgpu/normRMS32_program.d.ts +10 -0
- package/dist/ops/webgpu/normRMS32_program.js +28 -0
- package/dist/ops/webgpu/normRMSGrad.d.ts +1 -0
- package/dist/ops/webgpu/normRMSGrad.js +225 -0
- package/dist/ops/webgpu/pack16.d.ts +1 -0
- package/dist/ops/webgpu/pack16.js +21 -0
- package/dist/ops/webgpu/pack16_program.d.ts +19 -0
- package/dist/ops/webgpu/pack16_program.js +93 -0
- package/dist/ops/webgpu/qkv.d.ts +1 -0
- package/dist/ops/webgpu/qkv.js +64 -0
- package/dist/ops/webgpu/rope.d.ts +1 -0
- package/dist/ops/webgpu/rope.js +163 -0
- package/dist/ops/webgpu/scatterSub.d.ts +1 -0
- package/dist/ops/webgpu/scatterSub.js +53 -0
- package/dist/ops/webgpu/slice16.d.ts +7 -0
- package/dist/ops/webgpu/slice16.js +74 -0
- package/dist/ops/webgpu/softmax16.d.ts +17 -0
- package/dist/ops/webgpu/softmax16.js +18 -0
- package/dist/ops/webgpu/softmax16_program.d.ts +13 -0
- package/dist/ops/webgpu/softmax16_program.js +89 -0
- package/dist/ops/webgpu/softmax16_subgroup_program.d.ts +17 -0
- package/dist/ops/webgpu/softmax16_subgroup_program.js +70 -0
- package/dist/ops/webgpu/softmax16grad.d.ts +1 -0
- package/dist/ops/webgpu/softmax16grad.js +31 -0
- package/dist/ops/webgpu/sub16.d.ts +1 -0
- package/dist/ops/webgpu/sub16.js +14 -0
- package/dist/ops/webgpu/sum16.d.ts +1 -0
- package/dist/ops/webgpu/sum16.js +29 -0
- package/dist/ops/webgpu/transpose16.d.ts +1 -0
- package/dist/ops/webgpu/transpose16.js +37 -0
- package/dist/ops/webgpu/transpose16_program.d.ts +16 -0
- package/dist/ops/webgpu/transpose16_program.js +51 -0
- package/dist/ops/webgpu/transpose16_shared_program.d.ts +15 -0
- package/dist/ops/webgpu/transpose16_shared_program.js +79 -0
- package/dist/ops/webgpu/unpack16.d.ts +1 -0
- package/dist/ops/webgpu/unpack16.js +60 -0
- package/dist/ops/webgpu/utils/binary_op.d.ts +35 -0
- package/dist/ops/webgpu/utils/binary_op.js +141 -0
- package/dist/ops/webgpu/utils/deviceInfo.d.ts +7 -0
- package/dist/ops/webgpu/utils/deviceInfo.js +11 -0
- package/dist/ops/webgpu/utils/reductions.d.ts +43 -0
- package/dist/ops/webgpu/utils/reductions.js +263 -0
- package/dist/pack16-Ck-spx_F.js +39 -0
- package/dist/patches/webgpu_backend.d.ts +18 -0
- package/dist/patches/webgpu_backend.js +43 -0
- package/dist/patches/webgpu_base.d.ts +21 -0
- package/dist/patches/webgpu_base.js +22 -0
- package/dist/patches/webgpu_program.d.ts +36 -0
- package/dist/patches/webgpu_program.js +293 -0
- package/dist/pdf-UoDqCYzz.js +16726 -0
- package/dist/picomatch-3tUnMMbd.js +1063 -0
- package/dist/rope-CbeGlsV8.js +25 -0
- package/dist/selu_util-zkAx5doH.js +24 -0
- package/dist/shared-D1coEFea.js +1314 -0
- package/dist/shared-DOgWaqvL.js +5 -0
- package/dist/slice_util-Dgb3ANWI.js +208 -0
- package/dist/tfjs_backend-BjuQ5FqB.js +614 -0
- package/dist/tokeniser/BaseTokeniser.d.ts +33 -0
- package/dist/tokeniser/BaseTokeniser.js +2 -0
- package/dist/tokeniser/CharTokeniser.d.ts +24 -0
- package/dist/tokeniser/CharTokeniser.js +92 -0
- package/dist/tokeniser/bpe.d.ts +28 -0
- package/dist/tokeniser/bpe.js +170 -0
- package/dist/tokeniser/messages.d.ts +61 -0
- package/dist/tokeniser/messages.js +0 -0
- package/dist/tokeniser/type.d.ts +34 -0
- package/dist/tokeniser/type.js +0 -0
- package/dist/training/AdamW.d.ts +36 -0
- package/dist/training/AdamW.js +128 -0
- package/dist/training/BasicTrainer.d.ts +63 -0
- package/dist/training/BasicTrainer.js +265 -0
- package/dist/training/DatasetBuilder.d.ts +26 -0
- package/dist/training/DatasetBuilder.js +2 -0
- package/dist/training/Evaluator.d.ts +19 -0
- package/dist/training/Evaluator.js +48 -0
- package/dist/training/LRScheduler.d.ts +12 -0
- package/dist/training/LRScheduler.js +38 -0
- package/dist/training/PreTrainer.d.ts +11 -0
- package/dist/training/PreTrainer.js +22 -0
- package/dist/training/SFTTrainer.d.ts +12 -0
- package/dist/training/SFTTrainer.js +24 -0
- package/dist/training/loss.d.ts +3 -0
- package/dist/training/loss.js +19 -0
- package/dist/training/orthoGrad.d.ts +2 -0
- package/dist/training/orthoGrad.js +10 -0
- package/dist/training/sparseCrossEntropy.d.ts +7 -0
- package/dist/training/sparseCrossEntropy.js +47 -0
- package/dist/training/tasks/ConversationTask.d.ts +18 -0
- package/dist/training/tasks/ConversationTask.js +38 -0
- package/dist/training/tasks/PretrainingTask.d.ts +17 -0
- package/dist/training/tasks/PretrainingTask.js +42 -0
- package/dist/training/tasks/StartSentenceTask.d.ts +18 -0
- package/dist/training/tasks/StartSentenceTask.js +45 -0
- package/dist/training/tasks/Task.d.ts +22 -0
- package/dist/training/tasks/Task.js +55 -0
- package/dist/training/tasks/splitter.d.ts +5 -0
- package/dist/training/tasks/splitter.js +18 -0
- package/dist/training/types.d.ts +78 -0
- package/dist/training/types.js +0 -0
- package/dist/training/validation.d.ts +17 -0
- package/dist/training/validation.js +2 -0
- package/dist/utilities/arrayClose.d.ts +1 -0
- package/dist/utilities/arrayClose.js +16 -0
- package/dist/utilities/datasetID.d.ts +2 -0
- package/dist/utilities/datasetID.js +18 -0
- package/dist/utilities/dummy.d.ts +9 -0
- package/dist/utilities/dummy.js +36 -0
- package/dist/utilities/multinomialCPU.d.ts +2 -0
- package/dist/utilities/multinomialCPU.js +9 -0
- package/dist/utilities/naming.d.ts +4 -0
- package/dist/utilities/naming.js +0 -0
- package/dist/utilities/packed.d.ts +4 -0
- package/dist/utilities/packed.js +13 -0
- package/dist/utilities/parameters.d.ts +11 -0
- package/dist/utilities/parameters.js +38 -0
- package/dist/utilities/performance.d.ts +2 -0
- package/dist/utilities/performance.js +16 -0
- package/dist/utilities/profile.d.ts +17 -0
- package/dist/utilities/profile.js +33 -0
- package/dist/utilities/safetensors.d.ts +3 -0
- package/dist/utilities/safetensors.js +53 -0
- package/dist/utilities/sentences.d.ts +5 -0
- package/dist/utilities/sentences.js +32 -0
- package/dist/utilities/tokenParse.d.ts +1 -0
- package/dist/utilities/tokenParse.js +17 -0
- package/dist/utilities/topP.d.ts +1 -0
- package/dist/utilities/topP.js +12 -0
- package/dist/utilities/waitForModel.d.ts +2 -0
- package/dist/utilities/waitForModel.js +12 -0
- package/dist/utilities/weights.d.ts +12 -0
- package/dist/utilities/weights.js +40 -0
- package/dist/utilities/yielder.d.ts +1 -0
- package/dist/utilities/yielder.js +7 -0
- package/dist/webgpu-Dt7BMzWz.js +525 -0
- package/dist/webgpu_program-WOyIVMlZ.js +392 -0
- package/dist/webgpu_util-B_F3SShA.js +106 -0
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Task as e } from "./Task.js";
|
|
2
|
+
//#region lib/training/tasks/PretrainingTask.ts
|
|
3
|
+
var t = class extends e {
|
|
4
|
+
rawText;
|
|
5
|
+
index = 0;
|
|
6
|
+
get length() {
|
|
7
|
+
return this.rawText.length;
|
|
8
|
+
}
|
|
9
|
+
constructor(e) {
|
|
10
|
+
super(), this.rawText = e;
|
|
11
|
+
}
|
|
12
|
+
hasMoreConversations() {
|
|
13
|
+
return this.index < this.rawText.length;
|
|
14
|
+
}
|
|
15
|
+
nextConversation() {
|
|
16
|
+
if (this.index >= this.rawText.length) return null;
|
|
17
|
+
let e = {
|
|
18
|
+
role: "assistant",
|
|
19
|
+
content: this.rawText[this.index]
|
|
20
|
+
};
|
|
21
|
+
return this.index++, [e];
|
|
22
|
+
}
|
|
23
|
+
nextTokens(e, t) {
|
|
24
|
+
if (this.index >= this.rawText.length) return null;
|
|
25
|
+
let n = e.encodeSequence(this.rawText[this.index]);
|
|
26
|
+
return this.index++, t ? {
|
|
27
|
+
tokens: n,
|
|
28
|
+
mask: Array(n.length).fill(!0)
|
|
29
|
+
} : n;
|
|
30
|
+
}
|
|
31
|
+
shuffle() {
|
|
32
|
+
this.index = 0;
|
|
33
|
+
}
|
|
34
|
+
async estimateTokens(e) {
|
|
35
|
+
return e.encodeConversation([{
|
|
36
|
+
role: "assistant",
|
|
37
|
+
content: this.rawText[0]
|
|
38
|
+
}]).length * this.length;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { t as default };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Conversation, ITokeniser } from '../../../main';
|
|
2
|
+
import { Task } from './Task';
|
|
3
|
+
export default class StartSentenceTask extends Task {
|
|
4
|
+
private rawText;
|
|
5
|
+
private index;
|
|
6
|
+
get length(): number;
|
|
7
|
+
constructor(texts: string[]);
|
|
8
|
+
hasMoreConversations(): boolean;
|
|
9
|
+
nextConversation(): Conversation[] | null;
|
|
10
|
+
nextTokens(tokeniser: ITokeniser): number[] | null;
|
|
11
|
+
nextTokens(tokeniser: ITokeniser, masking: boolean): {
|
|
12
|
+
tokens: number[];
|
|
13
|
+
mask: boolean[];
|
|
14
|
+
} | null;
|
|
15
|
+
shuffle(): void;
|
|
16
|
+
private conversationFromString;
|
|
17
|
+
estimateTokens(tokeniser: ITokeniser): Promise<number>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Task as e } from "./Task.js";
|
|
2
|
+
//#region lib/training/tasks/StartSentenceTask.ts
|
|
3
|
+
var t = class extends e {
|
|
4
|
+
rawText;
|
|
5
|
+
index = 0;
|
|
6
|
+
get length() {
|
|
7
|
+
return this.rawText.length;
|
|
8
|
+
}
|
|
9
|
+
constructor(e) {
|
|
10
|
+
super(), this.rawText = e;
|
|
11
|
+
}
|
|
12
|
+
hasMoreConversations() {
|
|
13
|
+
return this.index < this.rawText.length;
|
|
14
|
+
}
|
|
15
|
+
nextConversation() {
|
|
16
|
+
if (this.index >= this.rawText.length) return null;
|
|
17
|
+
let e = this.rawText[this.index];
|
|
18
|
+
return this.index++, this.conversationFromString(e);
|
|
19
|
+
}
|
|
20
|
+
nextTokens(e, t) {
|
|
21
|
+
let n = this.nextConversation();
|
|
22
|
+
return n ? e.encodeConversation(n, !1, t) : null;
|
|
23
|
+
}
|
|
24
|
+
shuffle() {
|
|
25
|
+
this.index = 0;
|
|
26
|
+
}
|
|
27
|
+
conversationFromString(e) {
|
|
28
|
+
let t = e.indexOf(".");
|
|
29
|
+
return t === -1 ? [{
|
|
30
|
+
role: "assistant",
|
|
31
|
+
content: this.rawText[this.index]
|
|
32
|
+
}] : [{
|
|
33
|
+
role: "user",
|
|
34
|
+
content: e.slice(0, t + 1).trim()
|
|
35
|
+
}, {
|
|
36
|
+
role: "assistant",
|
|
37
|
+
content: e.slice(t + 1).trim()
|
|
38
|
+
}];
|
|
39
|
+
}
|
|
40
|
+
async estimateTokens(e) {
|
|
41
|
+
return (await e.encodeConversation(this.conversationFromString(this.rawText[0]))).length * this.length;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { t as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Conversation, ITokeniser } from '../../../main';
|
|
2
|
+
export declare abstract class Task {
|
|
3
|
+
abstract get length(): number;
|
|
4
|
+
abstract hasMoreConversations(): boolean;
|
|
5
|
+
abstract nextConversation(): Conversation[] | null;
|
|
6
|
+
abstract nextTokens(tokeniser: ITokeniser): number[] | null;
|
|
7
|
+
abstract nextTokens(tokeniser: ITokeniser, masking: boolean): {
|
|
8
|
+
tokens: number[];
|
|
9
|
+
mask: boolean[];
|
|
10
|
+
} | null;
|
|
11
|
+
abstract nextTokens(tokeniser: ITokeniser, masking?: boolean): number[] | {
|
|
12
|
+
tokens: number[];
|
|
13
|
+
mask: boolean[];
|
|
14
|
+
} | null;
|
|
15
|
+
abstract estimateTokens(tokeniser: ITokeniser): Promise<number>;
|
|
16
|
+
abstract shuffle(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function tokensFromTasks(tasks: Task[], tokenizer: ITokeniser, cb?: (tokens: number) => void): Promise<Uint16Array>;
|
|
19
|
+
export declare function tokensFromTasks(tasks: Task[], tokenizer: ITokeniser, cb?: (tokens: number) => void, masking?: boolean): Promise<{
|
|
20
|
+
tokens: Uint16Array;
|
|
21
|
+
mask: Uint8Array;
|
|
22
|
+
}>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { yieldIfNeeded as e } from "../../utilities/yielder.js";
|
|
2
|
+
//#region lib/training/tasks/Task.ts
|
|
3
|
+
var t = class {};
|
|
4
|
+
function n(e, t, n, r, i, a) {
|
|
5
|
+
for (let o of e) {
|
|
6
|
+
let e = o.nextTokens(n, a ? !0 : void 0);
|
|
7
|
+
if (e) {
|
|
8
|
+
let n = Array.isArray(e) ? e : e.tokens;
|
|
9
|
+
r.total += n.length;
|
|
10
|
+
let o = t[t.length - 1], s = a ? a[a.length - 1] : null;
|
|
11
|
+
if (r.offset + n.length > o.length) {
|
|
12
|
+
let c = o.length - r.offset;
|
|
13
|
+
o.set(n.slice(0, c), r.offset);
|
|
14
|
+
let l = new Uint16Array(Math.floor(i * .1) + 100);
|
|
15
|
+
if (l.set(n.slice(c), 0), t.push(l), a && s && !Array.isArray(e)) {
|
|
16
|
+
s.set(e.mask.slice(0, c).map((e) => +!!e), r.offset);
|
|
17
|
+
let t = new Uint8Array(l.length);
|
|
18
|
+
t.set(e.mask.slice(c).map((e) => +!!e), 0), a.push(t);
|
|
19
|
+
}
|
|
20
|
+
r.offset = n.length - c;
|
|
21
|
+
} else o.set(n, r.offset), s && !Array.isArray(e) && s.set(e.mask.map((e) => +!!e), r.offset), r.offset += n.length;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function r(t, r, i, a) {
|
|
26
|
+
let o = Math.min((await Promise.all(t.map((e) => e.estimateTokens(r)))).reduce((e, t) => e + t, 0), r.vocabSize * 1e4), s = [new Uint16Array(o)], c = a ? [new Uint8Array(o)] : null, l = {
|
|
27
|
+
offset: 0,
|
|
28
|
+
total: 0
|
|
29
|
+
}, u = performance.now();
|
|
30
|
+
for (; l.offset < o && (n(t, s, r, l, o, c || void 0), !t.every((e) => !e.hasMoreConversations()));) u = await e(u, i, l.total);
|
|
31
|
+
if (s.length === 1) return c ? {
|
|
32
|
+
tokens: s[0].subarray(0, l.offset),
|
|
33
|
+
mask: c[0].subarray(0, l.offset)
|
|
34
|
+
} : s[0].subarray(0, l.offset);
|
|
35
|
+
let d = s.reduce((e, t) => e + t.length, 0) - (s[s.length - 1].length - l.offset), f = new Uint16Array(d), p = 0;
|
|
36
|
+
for (let e = 0; e < s.length; e++) {
|
|
37
|
+
let t = s[e];
|
|
38
|
+
e === s.length - 1 ? (f.set(t.subarray(0, l.offset), p), p += l.offset) : (f.set(t, p), p += t.length);
|
|
39
|
+
}
|
|
40
|
+
if (c) {
|
|
41
|
+
let e = new Uint8Array(d);
|
|
42
|
+
p = 0;
|
|
43
|
+
for (let t = 0; t < c.length; t++) {
|
|
44
|
+
let n = c[t];
|
|
45
|
+
t === c.length - 1 ? (e.set(n.subarray(0, l.offset), p), p += l.offset) : (e.set(n, p), p += n.length);
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
tokens: f,
|
|
49
|
+
mask: e
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return f;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { t as Task, r as tokensFromTasks };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import e from "./ConversationTask.js";
|
|
2
|
+
//#region lib/training/tasks/splitter.ts
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
if (n <= 0 || n >= 1) throw Error("validationSplit must be between 0 and 1");
|
|
5
|
+
t.forEach((e) => e.shuffle());
|
|
6
|
+
let r = [], i = [];
|
|
7
|
+
for (let e of t) for (; e.hasMoreConversations();) {
|
|
8
|
+
let t = e.nextConversation();
|
|
9
|
+
if (!t) break;
|
|
10
|
+
Math.random() < n ? i.push(t) : r.push(t);
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
training: new e(r),
|
|
14
|
+
validation: new e(i)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { t as default };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { TensorStatistics } from '../../checks/weights';
|
|
2
|
+
import { LoRAConfig } from '../../models/config';
|
|
3
|
+
import { NamedTensorMap, Tensor } from '@tensorflow/tfjs-core';
|
|
4
|
+
export interface Metrics {
|
|
5
|
+
accuracy?: number;
|
|
6
|
+
perplexity?: number;
|
|
7
|
+
loss: number;
|
|
8
|
+
}
|
|
9
|
+
export interface TrainingLogEntry {
|
|
10
|
+
trainingMetrics: Metrics;
|
|
11
|
+
validationMetrics?: Metrics;
|
|
12
|
+
step: number;
|
|
13
|
+
time: number;
|
|
14
|
+
example?: string;
|
|
15
|
+
batchSize: number;
|
|
16
|
+
gradientMetrics?: Map<string, TensorStatistics>;
|
|
17
|
+
learningRate?: number;
|
|
18
|
+
gradientNorm?: number;
|
|
19
|
+
weightNorm?: number;
|
|
20
|
+
weightStatistics?: Map<string, TensorStatistics>;
|
|
21
|
+
memoryUsage?: number;
|
|
22
|
+
tokensPerSecond: number;
|
|
23
|
+
duration: number;
|
|
24
|
+
totalTokens: number;
|
|
25
|
+
}
|
|
26
|
+
export interface LRSchedulerConfig {
|
|
27
|
+
warmupSteps: number;
|
|
28
|
+
decayEpochs: number;
|
|
29
|
+
minLearningRate: number;
|
|
30
|
+
epochSteps: number;
|
|
31
|
+
step?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface AdamWOptimizerConfig extends LRSchedulerConfig {
|
|
34
|
+
learningRate: number;
|
|
35
|
+
beta1: number;
|
|
36
|
+
beta2: number;
|
|
37
|
+
accBeta1?: number;
|
|
38
|
+
accBeta2?: number;
|
|
39
|
+
epsilon?: number;
|
|
40
|
+
weightDecay: number;
|
|
41
|
+
lossScaling: number;
|
|
42
|
+
clipNorm?: number;
|
|
43
|
+
orthoGrad?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export type TrainingMetrics = 'accuracy' | 'perplexity' | 'gradientNorm' | 'gradientStatistics' | 'weightNorm' | 'weightStatistics' | 'memoryUsage' | 'tokensPerSecond' | 'learningRate';
|
|
46
|
+
export interface TrainingOptions extends Partial<AdamWOptimizerConfig> {
|
|
47
|
+
batchSize: number;
|
|
48
|
+
maxEpochs?: number;
|
|
49
|
+
logInterval?: number;
|
|
50
|
+
prompt?: string;
|
|
51
|
+
validationSplit?: number;
|
|
52
|
+
gradientCheckpointing?: boolean;
|
|
53
|
+
mixedPrecision?: boolean;
|
|
54
|
+
trainableWeights?: string[];
|
|
55
|
+
loraConfig?: LoRAConfig;
|
|
56
|
+
loraName?: string;
|
|
57
|
+
sftMode: 'full' | 'lora' | 'last-layer';
|
|
58
|
+
maskedLoss?: boolean;
|
|
59
|
+
metrics?: TrainingMetrics[];
|
|
60
|
+
contextScaling?: number;
|
|
61
|
+
labelSmoothing?: number;
|
|
62
|
+
dropout?: number;
|
|
63
|
+
layerDrop?: number;
|
|
64
|
+
debug?: boolean;
|
|
65
|
+
onStep?: (log: TrainingLogEntry) => void;
|
|
66
|
+
}
|
|
67
|
+
export interface TrainingState {
|
|
68
|
+
step: number;
|
|
69
|
+
lastLoss: number;
|
|
70
|
+
totalSteps: number;
|
|
71
|
+
losses: number[];
|
|
72
|
+
validationLosses: number[];
|
|
73
|
+
logStartTime: number;
|
|
74
|
+
trainingDuration: number;
|
|
75
|
+
gradients?: NamedTensorMap;
|
|
76
|
+
gradientNorm?: Tensor;
|
|
77
|
+
accuracy?: Tensor;
|
|
78
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ITokeniser, Task } from '../../main';
|
|
2
|
+
import { Tensor } from '@tensorflow/tfjs-core';
|
|
3
|
+
import { Dataset } from '@tensorflow/tfjs-data';
|
|
4
|
+
import { DatasetBuilder, DatasetState } from './DatasetBuilder';
|
|
5
|
+
export declare function createTrainValidationSplit(tasks: Task[] | Uint16Array, tokeniser: ITokeniser, datasetBuilder: DatasetBuilder, batchSize: number, validationSplit?: number, masking?: boolean): Promise<{
|
|
6
|
+
trainDataset: Dataset<{
|
|
7
|
+
xs: Tensor;
|
|
8
|
+
ys: Tensor;
|
|
9
|
+
}>;
|
|
10
|
+
validationDataset: Dataset<{
|
|
11
|
+
xs: Tensor;
|
|
12
|
+
ys: Tensor;
|
|
13
|
+
}>;
|
|
14
|
+
size: number;
|
|
15
|
+
validationState: DatasetState;
|
|
16
|
+
trainState: DatasetState;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function arraysClose(a: unknown, b: unknown): number;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region lib/utilities/arrayClose.ts
|
|
2
|
+
function e(t, n) {
|
|
3
|
+
let r = 0;
|
|
4
|
+
if ((Array.isArray(t) || t instanceof Float32Array) && (Array.isArray(n) || n instanceof Float32Array)) {
|
|
5
|
+
if (t.length !== n.length) return Infinity;
|
|
6
|
+
for (let i = 0; i < t.length; ++i) r = Math.max(r, e(t[i], n[i]));
|
|
7
|
+
return r;
|
|
8
|
+
} else if (typeof t == "number" && typeof n == "number") {
|
|
9
|
+
if (isNaN(t) && isNaN(n)) return 0;
|
|
10
|
+
if (!isFinite(t) || !isFinite(n)) return t === n ? 0 : Infinity;
|
|
11
|
+
let e = Math.abs(t - n);
|
|
12
|
+
return r = Math.max(r, e), r;
|
|
13
|
+
} else return Infinity;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { e as arraysClose };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region lib/utilities/datasetID.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let t = e.map((e) => String(e.id)).sort(), n = 2166136261, r = 2654435769, i = (e) => {
|
|
4
|
+
n ^= e & 255, n = Math.imul(n, 16777619), r ^= e & 255, r = Math.imul(r, 2246822507);
|
|
5
|
+
}, a = (e) => {
|
|
6
|
+
let t = e.length >>> 0;
|
|
7
|
+
i(t & 255), i(t >>> 8 & 255), i(t >>> 16 & 255), i(t >>> 24 & 255);
|
|
8
|
+
for (let t = 0; t < e.length; t++) {
|
|
9
|
+
let n = e.charCodeAt(t);
|
|
10
|
+
i(n & 255), i(n >>> 8 & 255);
|
|
11
|
+
}
|
|
12
|
+
}, o = t.length >>> 0;
|
|
13
|
+
i(o & 255), i(o >>> 8 & 255), i(o >>> 16 & 255), i(o >>> 24 & 255);
|
|
14
|
+
for (let e of t) a(e);
|
|
15
|
+
return "dataset__" + (n >>> 0).toString(36) + "_" + (r >>> 0).toString(36);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { e as default };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as Model, ModelForwardAttributes } from '../../models/model';
|
|
2
|
+
export declare function dummyPassAsync(model: Model<ModelForwardAttributes>): Promise<void>;
|
|
3
|
+
export interface MemoryRequirements {
|
|
4
|
+
perBatch: number;
|
|
5
|
+
tapeSize: number;
|
|
6
|
+
gradients: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function dummyPassTrainAsync(model: Model<ModelForwardAttributes>): Promise<MemoryRequirements>;
|
|
9
|
+
export declare function dummyPass(model: Model<ModelForwardAttributes>): void;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ii as e, kt as t, qt as n, si as r } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/dummy.ts
|
|
3
|
+
async function i(e) {
|
|
4
|
+
let n = t([1, e.config.blockSize], "int32"), r = e.forward({ training: !1 }, n);
|
|
5
|
+
await r.data(), r.dispose(), n.dispose();
|
|
6
|
+
}
|
|
7
|
+
async function a(a) {
|
|
8
|
+
let o = r(), s = o.numBytesInGPUAllocated ?? o.numBytesAllocatedInGPU ?? o.numBytes;
|
|
9
|
+
await i(a);
|
|
10
|
+
let c = t([1, a.config.blockSize], "int32"), l = {
|
|
11
|
+
perBatch: 0,
|
|
12
|
+
tapeSize: 0,
|
|
13
|
+
gradients: a.getNumParams() * 4
|
|
14
|
+
};
|
|
15
|
+
try {
|
|
16
|
+
let { value: t, grads: i } = n(() => {
|
|
17
|
+
let t = a.forward({ training: !0 }, c), n = e().state.activeTape, r = 0;
|
|
18
|
+
if (n) for (let e of n) r += e.saved?.reduce((e, t) => e + t.size * 4, 0) || 0;
|
|
19
|
+
l.tapeSize = r;
|
|
20
|
+
let i = t.mean();
|
|
21
|
+
return t.dispose(), i;
|
|
22
|
+
}), o = r();
|
|
23
|
+
l.perBatch = (o.numBytesInGPUAllocated ?? o.numBytesAllocatedInGPU ?? o.numBytes) - s - l.gradients, await t.data(), t.dispose();
|
|
24
|
+
for (let e in i) i[e].dispose();
|
|
25
|
+
c.dispose();
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.error("Error during dummy training pass:", e), c.dispose();
|
|
28
|
+
}
|
|
29
|
+
return l;
|
|
30
|
+
}
|
|
31
|
+
function o(e) {
|
|
32
|
+
let n = t([1, e.config.blockSize], "int32");
|
|
33
|
+
e.forward({ training: !1 }, n).dispose(), n.dispose();
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { o as dummyPass, i as dummyPassAsync, a as dummyPassTrainAsync };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { I as e } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/multinomialCPU.ts
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
let r = 0, i = n ?? Math.random();
|
|
5
|
+
for (let n = 0; n < t.length; n++) if (r += t[n], i < r) return e([[n]], [1, 1], "int32");
|
|
6
|
+
return e([[t.length - 1]], [1, 1], "int32");
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { t as default };
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ii as e } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/packed.ts
|
|
3
|
+
function t() {
|
|
4
|
+
return e().backendName === "webgpu";
|
|
5
|
+
}
|
|
6
|
+
function n(e) {
|
|
7
|
+
return e.dtype === "packedF16";
|
|
8
|
+
}
|
|
9
|
+
function r(e) {
|
|
10
|
+
return n(e);
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { n as isPackableTensor, r as isPackedTensor, t as packingSupported };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GPTConfig } from '../../models/config';
|
|
2
|
+
export declare function estimateLayerParameters(config: GPTConfig): number;
|
|
3
|
+
export declare function estimateParameterCount(config: GPTConfig): number;
|
|
4
|
+
export declare function estimateMemoryUsage(config: GPTConfig): number;
|
|
5
|
+
export declare function estimateTrainingMemoryUsage(config: GPTConfig, batchSize: number): number;
|
|
6
|
+
export declare function estimateResources(config: GPTConfig, batchSize: number): {
|
|
7
|
+
numParams: number;
|
|
8
|
+
modelMemoryMB: number;
|
|
9
|
+
trainingMemoryMB: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function validateConfig(config: GPTConfig): void;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region lib/utilities/parameters.ts
|
|
2
|
+
var e = 4;
|
|
3
|
+
function t(e) {
|
|
4
|
+
return 4 * e.nEmbed * e.nEmbed + (e.mlpFactor * e.nEmbed * e.nEmbed + e.nEmbed * e.mlpFactor * e.nEmbed);
|
|
5
|
+
}
|
|
6
|
+
function n(e) {
|
|
7
|
+
let t = e.vocabSize * e.nEmbed, n = e.nLayer * (4 * e.nEmbed * e.nEmbed), r = e.nLayer * (e.mlpFactor * e.nEmbed * e.nEmbed + e.nEmbed * e.mlpFactor * e.nEmbed);
|
|
8
|
+
return t + n + r;
|
|
9
|
+
}
|
|
10
|
+
function r(t) {
|
|
11
|
+
return n(t) * e;
|
|
12
|
+
}
|
|
13
|
+
function i(t, n) {
|
|
14
|
+
let i = r(t), a = i * 2, o = i * 2, s = n * t.blockSize * t.nEmbed * e;
|
|
15
|
+
return i + a + o + s;
|
|
16
|
+
}
|
|
17
|
+
function a(e, t) {
|
|
18
|
+
return {
|
|
19
|
+
numParams: n(e),
|
|
20
|
+
modelMemoryMB: r(e) / (1024 * 1024),
|
|
21
|
+
trainingMemoryMB: i(e, t) / (1024 * 1024)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function o(e) {
|
|
25
|
+
if (e.nEmbed % e.nHead !== 0) throw Error("nEmbed_divisible_nHead");
|
|
26
|
+
if (e.blockSize <= 0) throw Error("blockSize_positive");
|
|
27
|
+
if (e.vocabSize <= 0) throw Error("vocabSize_positive");
|
|
28
|
+
if (e.nLayer <= 0) throw Error("nLayer_positive");
|
|
29
|
+
if (e.mlpFactor <= 0) throw Error("mlpFactor_positive");
|
|
30
|
+
if (e.nEmbed / e.nHead % 2 != 0) throw Error("headDim_even");
|
|
31
|
+
if (!Number.isInteger(e.nEmbed)) throw Error("nEmbed_integer");
|
|
32
|
+
if (!Number.isInteger(e.nHead)) throw Error("nHead_integer");
|
|
33
|
+
if (!Number.isInteger(e.nLayer)) throw Error("nLayer_integer");
|
|
34
|
+
if (!Number.isInteger(e.blockSize)) throw Error("blockSize_integer");
|
|
35
|
+
if (!Number.isInteger(e.vocabSize)) throw Error("vocabSize_integer");
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { t as estimateLayerParameters, r as estimateMemoryUsage, n as estimateParameterCount, a as estimateResources, i as estimateTrainingMemoryUsage, o as validateConfig };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { di as e } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/performance.ts
|
|
3
|
+
async function t(t, n = 10, r = !1) {
|
|
4
|
+
for (let n = 0; n < 100; n++) {
|
|
5
|
+
let i = r ? await t() : e(t);
|
|
6
|
+
n === 99 && await i.data(), i.dispose();
|
|
7
|
+
}
|
|
8
|
+
let i = performance.now();
|
|
9
|
+
for (let i = 0; i < n; i++) {
|
|
10
|
+
let a = r ? await t() : e(t);
|
|
11
|
+
i === n - 1 && await a.data(), a.dispose();
|
|
12
|
+
}
|
|
13
|
+
return (performance.now() - i) / n;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { t as default };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MemoryInfo } from '@tensorflow/tfjs-core';
|
|
2
|
+
export interface ExtendedMemoryInfo extends MemoryInfo {
|
|
3
|
+
numBytesInGPUAllocated?: number;
|
|
4
|
+
numBytesAllocatedInGPU?: number;
|
|
5
|
+
}
|
|
6
|
+
export default class MemoryProfiler {
|
|
7
|
+
private log;
|
|
8
|
+
private maxMemory;
|
|
9
|
+
private maxLabel?;
|
|
10
|
+
private lastMemInfo;
|
|
11
|
+
private peakMemory;
|
|
12
|
+
startMemory(): void;
|
|
13
|
+
getPeakMemory(): number;
|
|
14
|
+
getMaxMemory(): number;
|
|
15
|
+
endMemory(label: string): void;
|
|
16
|
+
printSummary(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { si as e } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/profile.ts
|
|
3
|
+
var t = 1024 * 1024, n = class {
|
|
4
|
+
log = /* @__PURE__ */ new Map();
|
|
5
|
+
maxMemory = 0;
|
|
6
|
+
maxLabel;
|
|
7
|
+
lastMemInfo = [];
|
|
8
|
+
peakMemory = 0;
|
|
9
|
+
startMemory() {
|
|
10
|
+
this.lastMemInfo.push(e());
|
|
11
|
+
}
|
|
12
|
+
getPeakMemory() {
|
|
13
|
+
return this.peakMemory;
|
|
14
|
+
}
|
|
15
|
+
getMaxMemory() {
|
|
16
|
+
return this.maxMemory;
|
|
17
|
+
}
|
|
18
|
+
endMemory(t) {
|
|
19
|
+
if (this.lastMemInfo.length === 0) {
|
|
20
|
+
console.warn("MemoryProfiler: endMemory called without matching startMemory");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let n = e(), r = this.lastMemInfo.pop(), i = (n.numBytesInGPUAllocated ?? n.numBytesAllocatedInGPU ?? n.numBytes) - (r?.numBytesInGPUAllocated ?? r?.numBytesAllocatedInGPU ?? r?.numBytes ?? 0);
|
|
24
|
+
this.log.set(t, Math.max(this.log.get(t) || 0, i)), i > this.maxMemory && (this.maxMemory = i, this.maxLabel = t), this.peakMemory = Math.max(this.peakMemory, n.numBytesInGPUAllocated ?? n.numBytesAllocatedInGPU ?? n.numBytes);
|
|
25
|
+
}
|
|
26
|
+
printSummary() {
|
|
27
|
+
console.log("Memory Usage Summary:");
|
|
28
|
+
for (let [e, n] of this.log.entries()) console.log(`- ${e}: ${(n / t).toFixed(2)} MB`);
|
|
29
|
+
this.maxLabel && console.log(`Peak Memory Usage: ${(this.maxMemory / t).toFixed(2)} MB at "${this.maxLabel}"`), console.log(`Overall Peak Memory Usage: ${(this.peakMemory / t).toFixed(2)} MB`);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { n as default };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { fi as e } from "../dist-BewPQWjc.js";
|
|
2
|
+
//#region lib/utilities/safetensors.ts
|
|
3
|
+
function t(e) {
|
|
4
|
+
if (e === "float32") return "F32";
|
|
5
|
+
if (e === "int32") return "I32";
|
|
6
|
+
throw Error(`Unsupported dtype: ${e}`);
|
|
7
|
+
}
|
|
8
|
+
function n(e) {
|
|
9
|
+
if (e === "F32") return "float32";
|
|
10
|
+
if (e === "I32") return "int32";
|
|
11
|
+
throw Error(`Unsupported dtype: ${e}`);
|
|
12
|
+
}
|
|
13
|
+
async function r(e) {
|
|
14
|
+
let n = {}, r = 0;
|
|
15
|
+
for (let [i, a] of Object.entries(e)) n[i] = {
|
|
16
|
+
dtype: t(a.dtype),
|
|
17
|
+
shape: a.shape,
|
|
18
|
+
data_offsets: [r, r + a.size * 4]
|
|
19
|
+
}, r += a.size * 4;
|
|
20
|
+
let i = JSON.stringify(n), a = new TextEncoder().encode(i);
|
|
21
|
+
if (a.length % 4 != 0) {
|
|
22
|
+
let e = 4 - a.length % 4, t = new Uint8Array(a.length + e);
|
|
23
|
+
t.set(a);
|
|
24
|
+
for (let e = a.length; e < t.length; e++) t[e] = 32;
|
|
25
|
+
a = t;
|
|
26
|
+
}
|
|
27
|
+
let o = a.length, s = 8 + o + r, c = new ArrayBuffer(s);
|
|
28
|
+
new DataView(c).setUint32(0, o, !0), new Uint8Array(c, 8, o).set(a);
|
|
29
|
+
let l = 8 + o;
|
|
30
|
+
for (let t of Object.values(e)) {
|
|
31
|
+
if (t.size === 0) continue;
|
|
32
|
+
let e = await t.data();
|
|
33
|
+
if (t.dtype === "float32") new Float32Array(c, l, t.size).set(e), l += t.size * 4;
|
|
34
|
+
else if (t.dtype === "int32") new Int32Array(c, l, t.size).set(e), l += t.size * 4;
|
|
35
|
+
else throw Error(`Unsupported dtype: ${t.dtype}`);
|
|
36
|
+
}
|
|
37
|
+
return c;
|
|
38
|
+
}
|
|
39
|
+
async function i(t) {
|
|
40
|
+
let r = new DataView(t).getUint32(0, !0), i = new Uint8Array(t, 8, r), a = JSON.parse(new TextDecoder().decode(i)), o = {};
|
|
41
|
+
for (let [i, s] of Object.entries(a)) {
|
|
42
|
+
if (s.data_offsets[0] === s.data_offsets[1]) {
|
|
43
|
+
o[i] = e([], s.shape, n(s.dtype));
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (s.dtype === "F32") o[i] = e(new Float32Array(t, s.data_offsets[0] + 8 + r, (s.data_offsets[1] - s.data_offsets[0]) / 4), s.shape, n(s.dtype));
|
|
47
|
+
else if (s.dtype === "I32") o[i] = e(new Int32Array(t, s.data_offsets[0] + 8 + r, (s.data_offsets[1] - s.data_offsets[0]) / 4), s.shape, n(s.dtype));
|
|
48
|
+
else throw Error(`Unsupported dtype: ${s.dtype}`);
|
|
49
|
+
}
|
|
50
|
+
return o;
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { i as load_safetensors, r as save_safetensors };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { default as TeachableLLM } from '../../TeachableLLM';
|
|
2
|
+
import { Tensor2D, Tensor3D } from '@tensorflow/tfjs-core';
|
|
3
|
+
export declare function meanPooling(embeddings: Tensor3D, attentionMask?: Tensor2D): Tensor2D;
|
|
4
|
+
export declare function sentenceEmbeddingsTensor(model: TeachableLLM, sentences: string[], batchSize?: number): Tensor2D;
|
|
5
|
+
export declare function sentenceEmbeddings(model: TeachableLLM, sentences: string[], batchSize?: number): Promise<number[][]>;
|