cui-llama.rn 1.4.1 → 1.4.3
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/README.md +4 -23
- package/android/build.gradle +12 -3
- package/android/src/main/CMakeLists.txt +13 -7
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeCCompiler.cmake +81 -0
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeSystem.cmake +15 -0
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdC/CMakeCCompilerId.c +904 -0
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdC/CMakeCCompilerId.o +0 -0
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdCXX/CMakeCXXCompilerId.cpp +919 -0
- package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
- package/android/src/main/build-arm64/CMakeFiles/CMakeConfigureLog.yaml +55 -0
- package/android/src/main/java/com/rnllama/LlamaContext.java +28 -21
- package/android/src/main/java/com/rnllama/RNLlama.java +5 -1
- package/android/src/main/jni.cpp +8 -5
- package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
- package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
- package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
- package/cpp/README.md +1 -1
- package/cpp/common.cpp +0 -212
- package/cpp/common.h +3 -0
- package/cpp/rn-llama.cpp +822 -0
- package/cpp/rn-llama.h +123 -0
- package/ios/CMakeLists.txt +99 -0
- package/ios/RNLlama.h +5 -1
- package/ios/RNLlama.mm +2 -2
- package/ios/RNLlamaContext.h +8 -1
- package/ios/RNLlamaContext.mm +15 -11
- package/ios/rnllama.xcframework/Info.plist +74 -0
- package/jest/mock.js +3 -2
- package/lib/commonjs/NativeRNLlama.js.map +1 -1
- package/lib/commonjs/index.js +4 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeRNLlama.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/NativeRNLlama.d.ts +5 -1
- package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/llama-rn.podspec +8 -2
- package/package.json +4 -2
- package/src/NativeRNLlama.ts +5 -1
- package/src/index.ts +9 -2
package/README.md
CHANGED
@@ -36,6 +36,8 @@ npm install llama.rn
|
|
36
36
|
|
37
37
|
Please re-run `npx pod-install` again.
|
38
38
|
|
39
|
+
By default, `llama.rn` will use pre-built `rnllama.xcframework` for iOS. If you want to build from source, please set `RNLLAMA_BUILD_FROM_SOURCE` to `1` in your Podfile.
|
40
|
+
|
39
41
|
#### Android
|
40
42
|
|
41
43
|
Add proguard rule if it's enabled in project (android/app/proguard-rules.pro):
|
@@ -45,6 +47,8 @@ Add proguard rule if it's enabled in project (android/app/proguard-rules.pro):
|
|
45
47
|
-keep class com.rnllama.** { *; }
|
46
48
|
```
|
47
49
|
|
50
|
+
By default, `llama.rn` will use pre-built libraries for Android. If you want to build from source, please set `rnllamaBuildFromSource` to `true` in `android/gradle.properties`.
|
51
|
+
|
48
52
|
## Obtain the model
|
49
53
|
|
50
54
|
You can search HuggingFace for available models (Keyword: [`GGUF`](https://huggingface.co/search/full-text?q=GGUF&type=model)).
|
@@ -137,29 +141,6 @@ Please visit the [Documentation](docs/API) for more details.
|
|
137
141
|
|
138
142
|
You can also visit the [example](example) to see how to use it.
|
139
143
|
|
140
|
-
Run the example:
|
141
|
-
|
142
|
-
```bash
|
143
|
-
yarn && yarn bootstrap
|
144
|
-
|
145
|
-
# iOS
|
146
|
-
yarn example ios
|
147
|
-
# Use device
|
148
|
-
yarn example ios --device "<device name>"
|
149
|
-
# With release mode
|
150
|
-
yarn example ios --mode Release
|
151
|
-
|
152
|
-
# Android
|
153
|
-
yarn example android
|
154
|
-
# With release mode
|
155
|
-
yarn example android --mode release
|
156
|
-
```
|
157
|
-
|
158
|
-
This example used [react-native-document-picker](https://github.com/rnmods/react-native-document-picker) for select model.
|
159
|
-
|
160
|
-
- iOS: You can move the model to iOS Simulator, or iCloud for real device.
|
161
|
-
- Android: Selected file will be copied or downloaded to cache directory so it may be slow.
|
162
|
-
|
163
144
|
## Grammar Sampling
|
164
145
|
|
165
146
|
GBNF (GGML BNF) is a format for defining [formal grammars](https://en.wikipedia.org/wiki/Formal_grammar) to constrain model outputs in `llama.cpp`. For example, you can use it to force the model to generate valid JSON, or speak only in emojis.
|
package/android/build.gradle
CHANGED
@@ -54,9 +54,18 @@ android {
|
|
54
54
|
}
|
55
55
|
}
|
56
56
|
}
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
def rnllamaBuildFromSource = project.properties["rnllamaBuildFromSource"]
|
58
|
+
if (rnllamaBuildFromSource == "true") {
|
59
|
+
externalNativeBuild {
|
60
|
+
cmake {
|
61
|
+
path = file('src/main/CMakeLists.txt')
|
62
|
+
}
|
63
|
+
}
|
64
|
+
// Exclude jniLibs
|
65
|
+
sourceSets {
|
66
|
+
main {
|
67
|
+
jniLibs.srcDirs = []
|
68
|
+
}
|
60
69
|
}
|
61
70
|
}
|
62
71
|
buildTypes {
|
@@ -2,6 +2,12 @@ cmake_minimum_required(VERSION 3.10)
|
|
2
2
|
|
3
3
|
project(llama.rn)
|
4
4
|
|
5
|
+
find_program(CCACHE_FOUND ccache)
|
6
|
+
if(CCACHE_FOUND)
|
7
|
+
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
8
|
+
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
9
|
+
endif(CCACHE_FOUND)
|
10
|
+
|
5
11
|
set(CMAKE_CXX_STANDARD 17)
|
6
12
|
set(RNLLAMA_LIB_DIR ${CMAKE_SOURCE_DIR}/../../../cpp)
|
7
13
|
|
@@ -45,7 +51,7 @@ set(
|
|
45
51
|
${RNLLAMA_LIB_DIR}/unicode.cpp
|
46
52
|
${RNLLAMA_LIB_DIR}/sgemm.cpp
|
47
53
|
${RNLLAMA_LIB_DIR}/common.cpp
|
48
|
-
${RNLLAMA_LIB_DIR}/rn-llama.
|
54
|
+
${RNLLAMA_LIB_DIR}/rn-llama.cpp
|
49
55
|
${CMAKE_SOURCE_DIR}/jni-utils.h
|
50
56
|
${CMAKE_SOURCE_DIR}/jni.cpp
|
51
57
|
)
|
@@ -86,13 +92,13 @@ build_library("rnllama" "")
|
|
86
92
|
|
87
93
|
if (${ANDROID_ABI} STREQUAL "arm64-v8a")
|
88
94
|
# ARM64 targets
|
89
|
-
|
90
|
-
|
91
|
-
build_library("rnllama_v8_4_fp16_dotprod_i8mm" "-march=armv8.4-a+fp16+dotprod+i8mm")
|
92
|
-
build_library("rnllama_v8_4_fp16_dotprod" "-march=armv8.4-a+fp16+dotprod")
|
93
|
-
build_library("rnllama_v8_2_fp16_dotprod" "-march=armv8.2-a+fp16+dotprod")
|
94
|
-
build_library("rnllama_v8_2_fp16" "-march=armv8.2-a+fp16")
|
95
|
+
# Removing fp16 for now as it leads to issues with some models like deepseek r1 distills
|
96
|
+
# https://github.com/mybigday/llama.rn/pull/110#issuecomment-2609918310
|
95
97
|
build_library("rnllama_v8" "-march=armv8-a")
|
98
|
+
build_library("rnllama_v8_2" "-march=armv8.2-a")
|
99
|
+
build_library("rnllama_v8_2_dotprod" "-march=armv8.2-a+dotprod")
|
100
|
+
build_library("rnllama_v8_2_i8mm" "-march=armv8.2-a+i8mm")
|
101
|
+
build_library("rnllama_v8_2_dotprod_i8mm" "-march=armv8.2-a+dotprod+i8mm")
|
96
102
|
|
97
103
|
# https://github.com/ggerganov/llama.cpp/blob/master/docs/android.md#cross-compile-using-android-ndk
|
98
104
|
# llama.cpp will deal with the cpu features
|
@@ -0,0 +1,81 @@
|
|
1
|
+
set(CMAKE_C_COMPILER "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe")
|
2
|
+
set(CMAKE_C_COMPILER_ARG1 "")
|
3
|
+
set(CMAKE_C_COMPILER_ID "Clang")
|
4
|
+
set(CMAKE_C_COMPILER_VERSION "17.0.2")
|
5
|
+
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
|
6
|
+
set(CMAKE_C_COMPILER_WRAPPER "")
|
7
|
+
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17")
|
8
|
+
set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON")
|
9
|
+
set(CMAKE_C_STANDARD_LATEST "")
|
10
|
+
set(CMAKE_C_COMPILE_FEATURES "")
|
11
|
+
set(CMAKE_C90_COMPILE_FEATURES "")
|
12
|
+
set(CMAKE_C99_COMPILE_FEATURES "")
|
13
|
+
set(CMAKE_C11_COMPILE_FEATURES "")
|
14
|
+
set(CMAKE_C17_COMPILE_FEATURES "")
|
15
|
+
set(CMAKE_C23_COMPILE_FEATURES "")
|
16
|
+
|
17
|
+
set(CMAKE_C_PLATFORM_ID "Linux")
|
18
|
+
set(CMAKE_C_SIMULATE_ID "")
|
19
|
+
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
|
20
|
+
set(CMAKE_C_SIMULATE_VERSION "")
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
set(CMAKE_AR "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
26
|
+
set(CMAKE_C_COMPILER_AR "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ar.exe")
|
27
|
+
set(CMAKE_RANLIB "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
28
|
+
set(CMAKE_C_COMPILER_RANLIB "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-ranlib.exe")
|
29
|
+
set(CMAKE_LINKER "D:/Android/Sdk/ndk/26.3.11579264/toolchains/llvm/prebuilt/windows-x86_64/bin/ld.lld.exe")
|
30
|
+
set(CMAKE_LINKER_LINK "")
|
31
|
+
set(CMAKE_LINKER_LLD "")
|
32
|
+
set(CMAKE_C_COMPILER_LINKER "")
|
33
|
+
set(CMAKE_C_COMPILER_LINKER_ID "")
|
34
|
+
set(CMAKE_C_COMPILER_LINKER_VERSION )
|
35
|
+
set(CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT )
|
36
|
+
set(CMAKE_MT "")
|
37
|
+
set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND")
|
38
|
+
set(CMAKE_COMPILER_IS_GNUCC )
|
39
|
+
set(CMAKE_C_COMPILER_LOADED 1)
|
40
|
+
set(CMAKE_C_COMPILER_WORKS )
|
41
|
+
set(CMAKE_C_ABI_COMPILED )
|
42
|
+
|
43
|
+
set(CMAKE_C_COMPILER_ENV_VAR "CC")
|
44
|
+
|
45
|
+
set(CMAKE_C_COMPILER_ID_RUN 1)
|
46
|
+
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
|
47
|
+
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
|
48
|
+
set(CMAKE_C_LINKER_PREFERENCE 10)
|
49
|
+
set(CMAKE_C_LINKER_DEPFILE_SUPPORTED )
|
50
|
+
|
51
|
+
# Save compiler ABI information.
|
52
|
+
set(CMAKE_C_SIZEOF_DATA_PTR "")
|
53
|
+
set(CMAKE_C_COMPILER_ABI "")
|
54
|
+
set(CMAKE_C_BYTE_ORDER "")
|
55
|
+
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
|
56
|
+
|
57
|
+
if(CMAKE_C_SIZEOF_DATA_PTR)
|
58
|
+
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
|
59
|
+
endif()
|
60
|
+
|
61
|
+
if(CMAKE_C_COMPILER_ABI)
|
62
|
+
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
|
63
|
+
endif()
|
64
|
+
|
65
|
+
if(CMAKE_C_LIBRARY_ARCHITECTURE)
|
66
|
+
set(CMAKE_LIBRARY_ARCHITECTURE "")
|
67
|
+
endif()
|
68
|
+
|
69
|
+
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
|
70
|
+
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
|
71
|
+
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
|
72
|
+
endif()
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "")
|
79
|
+
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "")
|
80
|
+
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "")
|
81
|
+
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
@@ -0,0 +1,15 @@
|
|
1
|
+
set(CMAKE_HOST_SYSTEM "Windows-10.0.26120")
|
2
|
+
set(CMAKE_HOST_SYSTEM_NAME "Windows")
|
3
|
+
set(CMAKE_HOST_SYSTEM_VERSION "10.0.26120")
|
4
|
+
set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
|
5
|
+
|
6
|
+
include("D:/Android/Sdk/ndk/26.3.11579264/build/cmake/android.toolchain.cmake")
|
7
|
+
|
8
|
+
set(CMAKE_SYSTEM "Android-1")
|
9
|
+
set(CMAKE_SYSTEM_NAME "Android")
|
10
|
+
set(CMAKE_SYSTEM_VERSION "1")
|
11
|
+
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
|
12
|
+
|
13
|
+
set(CMAKE_CROSSCOMPILING "TRUE")
|
14
|
+
|
15
|
+
set(CMAKE_SYSTEM_LOADED 1)
|