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.
Files changed (46) hide show
  1. package/README.md +4 -23
  2. package/android/build.gradle +12 -3
  3. package/android/src/main/CMakeLists.txt +13 -7
  4. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeCCompiler.cmake +81 -0
  5. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CMakeSystem.cmake +15 -0
  6. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdC/CMakeCCompilerId.c +904 -0
  7. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdC/CMakeCCompilerId.o +0 -0
  8. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdCXX/CMakeCXXCompilerId.cpp +919 -0
  9. package/android/src/main/build-arm64/CMakeFiles/3.31.4/CompilerIdCXX/CMakeCXXCompilerId.o +0 -0
  10. package/android/src/main/build-arm64/CMakeFiles/CMakeConfigureLog.yaml +55 -0
  11. package/android/src/main/java/com/rnllama/LlamaContext.java +28 -21
  12. package/android/src/main/java/com/rnllama/RNLlama.java +5 -1
  13. package/android/src/main/jni.cpp +8 -5
  14. package/android/src/main/jniLibs/arm64-v8a/librnllama.so +0 -0
  15. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8.so +0 -0
  16. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2.so +0 -0
  17. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod.so +0 -0
  18. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_dotprod_i8mm.so +0 -0
  19. package/android/src/main/jniLibs/arm64-v8a/librnllama_v8_2_i8mm.so +0 -0
  20. package/android/src/main/jniLibs/x86_64/librnllama.so +0 -0
  21. package/android/src/main/jniLibs/x86_64/librnllama_x86_64.so +0 -0
  22. package/cpp/README.md +1 -1
  23. package/cpp/common.cpp +0 -212
  24. package/cpp/common.h +3 -0
  25. package/cpp/rn-llama.cpp +822 -0
  26. package/cpp/rn-llama.h +123 -0
  27. package/ios/CMakeLists.txt +99 -0
  28. package/ios/RNLlama.h +5 -1
  29. package/ios/RNLlama.mm +2 -2
  30. package/ios/RNLlamaContext.h +8 -1
  31. package/ios/RNLlamaContext.mm +15 -11
  32. package/ios/rnllama.xcframework/Info.plist +74 -0
  33. package/jest/mock.js +3 -2
  34. package/lib/commonjs/NativeRNLlama.js.map +1 -1
  35. package/lib/commonjs/index.js +4 -2
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/module/NativeRNLlama.js.map +1 -1
  38. package/lib/module/index.js +4 -2
  39. package/lib/module/index.js.map +1 -1
  40. package/lib/typescript/NativeRNLlama.d.ts +5 -1
  41. package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
  42. package/lib/typescript/index.d.ts.map +1 -1
  43. package/llama-rn.podspec +8 -2
  44. package/package.json +4 -2
  45. package/src/NativeRNLlama.ts +5 -1
  46. 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.
@@ -54,9 +54,18 @@ android {
54
54
  }
55
55
  }
56
56
  }
57
- externalNativeBuild {
58
- cmake {
59
- path = file('src/main/CMakeLists.txt')
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.hpp
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
- build_library("rnllama_v8_4_fp16_dotprod_sve" "-march=armv8.4-a+fp16+dotprod+sve")
90
- build_library("rnllama_v8_4_fp16_dotprod_i8mm_sve" "-march=armv8.4-a+fp16+dotprod+i8mm+sve")
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)