From 767e50fd7834f76a401386e9403a3651e3a35bd3 Mon Sep 17 00:00:00 2001 From: lucylq Date: Wed, 10 Sep 2025 12:02:59 -0700 Subject: [PATCH 1/3] JNI support for multiple ptd files ^ Differential Revision: [D82072929](https://our.internmc.facebook.com/intern/diff/D82072929/) [ghstack-poisoned] --- .../java/org/pytorch/executorch/extension/llm/LlmModule.java | 1 - 1 file changed, 1 deletion(-) diff --git a/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java b/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java index f135731f26a..bc0221baff7 100644 --- a/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java +++ b/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java @@ -59,7 +59,6 @@ public LlmModule( if (!tokenizerFile.canRead() || !tokenizerFile.isFile()) { throw new RuntimeException("Cannot load tokenizer path " + tokenizerPath); } - mHybridData = initHybrid(modelType, modulePath, tokenizerPath, temperature, dataFiles); } From a47e8ed2cfe7dbaf1cd8a18c43f3b01517d7257c Mon Sep 17 00:00:00 2001 From: lucylq Date: Fri, 3 Oct 2025 09:40:19 -0700 Subject: [PATCH 2/3] Update base for Update on "Swift support for multiple ptd files" Differential Revision: [D82075758](https://our.internmc.facebook.com/intern/diff/D82075758/) [ghstack-poisoned] From c4e39d4b1b3d246ce4d72007c7de3c131e379a5a Mon Sep 17 00:00:00 2001 From: lucylq Date: Fri, 3 Oct 2025 09:40:31 -0700 Subject: [PATCH 3/3] Swift support for multiple ptd files Differential Revision: D82075758 Pull Request resolved: https://github.com/pytorch/executorch/pull/14754 --- .../executorch/extension/llm/LlmModule.java | 1 + .../ExecuTorch/Exported/ExecuTorchModule.h | 8 ++++---- .../ExecuTorch/Exported/ExecuTorchModule.mm | 19 +++++++++++++------ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java b/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java index bc0221baff7..f135731f26a 100644 --- a/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java +++ b/extension/android/executorch_android/src/main/java/org/pytorch/executorch/extension/llm/LlmModule.java @@ -59,6 +59,7 @@ public LlmModule( if (!tokenizerFile.canRead() || !tokenizerFile.isFile()) { throw new RuntimeException("Cannot load tokenizer path " + tokenizerPath); } + mHybridData = initHybrid(modelType, modulePath, tokenizerPath, temperature, dataFiles); } diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h index cda9a914bc3..9b8400d739f 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h +++ b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.h @@ -126,14 +126,14 @@ NS_SWIFT_NAME(Module) * Initializes a module with a file path, data path and a specified load mode. * * @param filePath A string representing the path to the ExecuTorch program file. - * @param dataFilePath A string representing the path to a .ptd file with + * @param dataFilePaths A list of strings representing paths to .ptd files with * external tensors and external data. * @param loadMode A value from ExecuTorchModuleLoadMode that determines the * file loading behavior. * @return An initialized ExecuTorchModule instance. */ - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath + dataFilePaths:(NSArray *)dataFilePaths loadMode:(ExecuTorchModuleLoadMode)loadMode NS_DESIGNATED_INITIALIZER; @@ -141,12 +141,12 @@ NS_SWIFT_NAME(Module) * Initializes a module with a file path, data path and a specified load mode. * * @param filePath A string representing the path to the ExecuTorch program file. - * @param dataFilePath A string representing the path to a .ptd file with + * @param dataFilePaths A list of strings representing paths to .ptd files with * external tensors and external data. * @return An initialized ExecuTorchModule instance. */ - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath; + dataFilePaths:(NSArray *)dataFilePaths; /** * Initializes a module with a file path and a specified load mode. diff --git a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm index ce58f2fb21a..69bb59c860e 100644 --- a/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm +++ b/extension/apple/ExecuTorch/Exported/ExecuTorchModule.mm @@ -250,13 +250,20 @@ @implementation ExecuTorchModule { } - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath + dataFilePaths:(NSArray *)dataFilePaths loadMode:(ExecuTorchModuleLoadMode)loadMode { self = [super init]; if (self) { + // Convert NSArray to std::vector + std::vector dataFilePathsVector; + if (dataFilePaths != nil) { + for (NSString *dataFile in dataFilePaths) { + dataFilePathsVector.emplace_back(dataFile.UTF8String); + } + } _module = std::make_unique( filePath.UTF8String, - dataFilePath.UTF8String, + dataFilePathsVector, static_cast(loadMode) ); _inputs = [NSMutableDictionary new]; @@ -266,21 +273,21 @@ - (instancetype)initWithFilePath:(NSString *)filePath } - (instancetype)initWithFilePath:(NSString *)filePath - dataFilePath:(NSString *)dataFilePath { + dataFilePaths:(NSArray *)dataFilePaths { return [self initWithFilePath:filePath - dataFilePath:dataFilePath + dataFilePaths:dataFilePaths loadMode:ExecuTorchModuleLoadModeFile]; } - (instancetype)initWithFilePath:(NSString *)filePath loadMode:(ExecuTorchModuleLoadMode)loadMode { return [self initWithFilePath:filePath - dataFilePath:@"" + dataFilePaths:@[] loadMode:loadMode]; } - (instancetype)initWithFilePath:(NSString *)filePath { return [self initWithFilePath:filePath - dataFilePath:@"" + dataFilePaths:@[] loadMode:ExecuTorchModuleLoadModeFile]; }