Skip to content

Commit d53b9ad

Browse files
committed
Add code of Ollama-OV module
1 parent 409e3c9 commit d53b9ad

File tree

789 files changed

+740194
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

789 files changed

+740194
-1
lines changed

modules/ollama_openvino

-1
This file was deleted.
+129
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
cmake_minimum_required(VERSION 3.21)
2+
3+
project(Ollama C CXX)
4+
5+
include(CheckLanguage)
6+
7+
find_package(Threads REQUIRED)
8+
9+
set(CMAKE_BUILD_TYPE Release)
10+
set(BUILD_SHARED_LIBS ON)
11+
12+
set(CMAKE_CXX_STANDARD 17)
13+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
14+
set(CMAKE_CXX_EXTENSIONS OFF)
15+
16+
set(GGML_BUILD ON)
17+
set(GGML_SHARED ON)
18+
set(GGML_CCACHE ON)
19+
set(GGML_BACKEND_DL ON)
20+
set(GGML_BACKEND_SHARED ON)
21+
set(GGML_SCHED_MAX_COPIES 4)
22+
23+
set(GGML_LLAMAFILE ON)
24+
set(GGML_CUDA_PEER_MAX_BATCH_SIZE 128)
25+
set(GGML_CUDA_GRAPHS ON)
26+
27+
if((NOT CMAKE_OSX_ARCHITECTURES MATCHES "arm64")
28+
OR (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "arm|aarch64|ARM64|ARMv[0-9]+"))
29+
set(GGML_CPU_ALL_VARIANTS ON)
30+
endif()
31+
32+
if (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
33+
set(CMAKE_BUILD_RPATH "@loader_path")
34+
set(CMAKE_INSTALL_RPATH "@loader_path")
35+
endif()
36+
37+
set(OLLAMA_BUILD_DIR ${CMAKE_BINARY_DIR}/lib/ollama)
38+
set(OLLAMA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib/ollama)
39+
40+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR})
41+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OLLAMA_BUILD_DIR})
42+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OLLAMA_BUILD_DIR})
43+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR})
44+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${OLLAMA_BUILD_DIR})
45+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${OLLAMA_BUILD_DIR})
46+
47+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src)
48+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/include)
49+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cpu)
50+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cpu/amx)
51+
52+
set(GGML_CPU ON)
53+
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src)
54+
set_property(TARGET ggml PROPERTY EXCLUDE_FROM_ALL TRUE)
55+
56+
get_target_property(CPU_VARIANTS ggml-cpu MANUALLY_ADDED_DEPENDENCIES)
57+
if(NOT CPU_VARIANTS)
58+
set(CPU_VARIANTS "ggml-cpu")
59+
endif()
60+
61+
install(TARGETS ggml-base ${CPU_VARIANTS}
62+
RUNTIME_DEPENDENCIES
63+
PRE_EXCLUDE_REGEXES ".*"
64+
RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
65+
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
66+
FRAMEWORK DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
67+
)
68+
69+
check_language(CUDA)
70+
if(CMAKE_CUDA_COMPILER)
71+
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24" AND NOT CMAKE_CUDA_ARCHITECTURES)
72+
set(CMAKE_CUDA_ARCHITECTURES "native")
73+
endif()
74+
75+
find_package(CUDAToolkit)
76+
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cuda)
77+
set(OLLAMA_CUDA_INSTALL_DIR ${OLLAMA_INSTALL_DIR}/cuda_v${CUDAToolkit_VERSION_MAJOR})
78+
install(TARGETS ggml-cuda
79+
RUNTIME_DEPENDENCIES
80+
DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_LIBRARY_DIR}
81+
PRE_INCLUDE_REGEXES cublas cublasLt cudart
82+
PRE_EXCLUDE_REGEXES ".*"
83+
RUNTIME DESTINATION ${OLLAMA_CUDA_INSTALL_DIR} COMPONENT CUDA
84+
LIBRARY DESTINATION ${OLLAMA_CUDA_INSTALL_DIR} COMPONENT CUDA
85+
)
86+
endif()
87+
88+
set(WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX "^gfx(906|908|90a):xnack[+-]$"
89+
CACHE STRING
90+
"Regular expression describing AMDGPU_TARGETS not supported on Windows. Override to force building these targets. Default \"^gfx(906|908|90a):xnack[+-]$\"."
91+
)
92+
93+
check_language(HIP)
94+
if(CMAKE_HIP_COMPILER)
95+
set(HIP_PLATFORM "amd")
96+
97+
find_package(hip REQUIRED)
98+
if(NOT AMDGPU_TARGETS)
99+
list(FILTER AMDGPU_TARGETS INCLUDE REGEX "^gfx(900|94[012]|101[02]|1030|110[012])$")
100+
elseif(WIN32 AND WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX)
101+
list(FILTER AMDGPU_TARGETS EXCLUDE REGEX ${WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX})
102+
endif()
103+
104+
if(AMDGPU_TARGETS)
105+
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-hip)
106+
107+
if (WIN32)
108+
target_compile_definitions(ggml-hip PRIVATE GGML_CUDA_NO_PEER_COPY=1)
109+
endif()
110+
111+
set(OLLAMA_HIP_INSTALL_DIR ${OLLAMA_INSTALL_DIR}/rocm)
112+
install(TARGETS ggml-hip
113+
RUNTIME_DEPENDENCIES
114+
DIRECTORIES ${HIP_BIN_INSTALL_DIR} ${HIP_LIB_INSTALL_DIR}
115+
PRE_INCLUDE_REGEXES hipblas rocblas amdhip64 rocsolver amd_comgr hsa-runtime64 rocsparse tinfo rocprofiler-register drm drm_amdgpu numa elf
116+
PRE_EXCLUDE_REGEXES ".*"
117+
POST_EXCLUDE_REGEXES "system32"
118+
RUNTIME DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP
119+
LIBRARY DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP
120+
)
121+
122+
foreach(HIP_LIB_BIN_INSTALL_DIR IN ITEMS ${HIP_BIN_INSTALL_DIR} ${HIP_LIB_INSTALL_DIR})
123+
if(EXISTS ${HIP_LIB_BIN_INSTALL_DIR}/rocblas)
124+
install(DIRECTORY ${HIP_LIB_BIN_INSTALL_DIR}/rocblas DESTINATION ${OLLAMA_HIP_INSTALL_DIR} COMPONENT HIP)
125+
break()
126+
endif()
127+
endforeach()
128+
endif()
129+
endif()
+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
{
2+
"version": 3,
3+
"configurePresets": [
4+
{
5+
"name": "Default",
6+
"binaryDir": "${sourceDir}/build",
7+
"installDir": "${sourceDir}/dist",
8+
"cacheVariables": {
9+
"CMAKE_BUILD_TYPE": "Release"
10+
}
11+
},
12+
{
13+
"name": "CPU",
14+
"inherits": [ "Default" ]
15+
},
16+
{
17+
"name": "CUDA",
18+
"inherits": [ "Default" ]
19+
},
20+
{
21+
"name": "CUDA 11",
22+
"inherits": [ "CUDA" ],
23+
"cacheVariables": {
24+
"CMAKE_CUDA_ARCHITECTURES": "50;52;53;60;61;62;70;72;75;80;86"
25+
}
26+
},
27+
{
28+
"name": "CUDA 12",
29+
"inherits": [ "CUDA" ],
30+
"cacheVariables": {
31+
"CMAKE_CUDA_ARCHITECTURES": "60;61;62;70;72;75;80;86;87;89;90;90a"
32+
}
33+
},
34+
{
35+
"name": "JetPack 5",
36+
"inherits": [ "CUDA" ],
37+
"cacheVariables": {
38+
"CMAKE_CUDA_ARCHITECTURES": "72;87"
39+
}
40+
},
41+
{
42+
"name": "JetPack 6",
43+
"inherits": [ "CUDA" ],
44+
"cacheVariables": {
45+
"CMAKE_CUDA_ARCHITECTURES": "87"
46+
}
47+
},
48+
{
49+
"name": "ROCm",
50+
"inherits": [ "Default" ],
51+
"cacheVariables": {
52+
"CMAKE_HIP_PLATFORM": "amd"
53+
}
54+
},
55+
{
56+
"name": "ROCm 6",
57+
"inherits": [ "ROCm" ],
58+
"cacheVariables": {
59+
"AMDGPU_TARGETS": "gfx900;gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-"
60+
}
61+
}
62+
],
63+
"buildPresets": [
64+
{
65+
"name": "Default",
66+
"configurePreset": "Default",
67+
"configuration": "Release"
68+
},
69+
{
70+
"name": "CPU",
71+
"configurePreset": "Default",
72+
"targets": [ "ggml-cpu" ]
73+
},
74+
{
75+
"name": "CUDA",
76+
"configurePreset": "CUDA",
77+
"targets": [ "ggml-cuda" ]
78+
},
79+
{
80+
"name": "CUDA 11",
81+
"inherits": [ "CUDA" ],
82+
"configurePreset": "CUDA 11"
83+
},
84+
{
85+
"name": "CUDA 12",
86+
"inherits": [ "CUDA" ],
87+
"configurePreset": "CUDA 12"
88+
},
89+
{
90+
"name": "JetPack 5",
91+
"inherits": [ "CUDA" ],
92+
"configurePreset": "JetPack 5"
93+
},
94+
{
95+
"name": "JetPack 6",
96+
"inherits": [ "CUDA" ],
97+
"configurePreset": "JetPack 6"
98+
},
99+
{
100+
"name": "ROCm",
101+
"configurePreset": "ROCm",
102+
"targets": [ "ggml-hip" ]
103+
},
104+
{
105+
"name": "ROCm 6",
106+
"inherits": [ "ROCm" ],
107+
"configurePreset": "ROCm 6"
108+
}
109+
]
110+
}
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Contributing to Ollama
2+
3+
Thank you for your interest in contributing to Ollama! Here are a few guidelines to help get you started.
4+
5+
## Set up
6+
7+
See the [development documentation](./docs/development.md) for instructions on how to build and run Ollama locally.
8+
9+
## Pull requests
10+
11+
### Ideal issues
12+
13+
* [Bugs](https://github.com/ollama/ollama/issues?q=is%3Aissue+is%3Aopen+label%3Abug): issues where Ollama stops working or where it results in an unexpected error.
14+
* [Performance](https://github.com/ollama/ollama/issues?q=is%3Aissue+is%3Aopen+label%3Aperformance): issues to make Ollama faster at model inference, downloading or uploading.
15+
* [Security](https://github.com/ollama/ollama/blob/main/SECURITY.md): issues that could lead to a security vulnerability. As mentioned in [SECURITY.md](https://github.com/ollama/ollama/blob/main/SECURITY.md), please do not disclose security vulnerabilities publicly.
16+
17+
### Issues that are harder to review
18+
19+
* New features: new features (e.g. API fields, environment variables) add surface area to Ollama and make it harder to maintain in the long run as they cannot be removed without potentially breaking users in the future.
20+
* Refactoring: large code improvements are important, but can be harder or take longer to review and merge.
21+
* Documentation: small updates to fill in or correct missing documentation is helpful, however large documentation additions can be hard to maintain over time.
22+
23+
### Issues that may not be accepted
24+
25+
* Changes that break backwards compatibility in Ollama's API (including the OpenAI-compatible API)
26+
* Changes that add significant friction to the user experience
27+
* Changes that create a large future maintenance burden for maintainers and contributors
28+
29+
### Best practices
30+
31+
* Commit messages: please leave both a title and a description in your commit messages. The title should be a short summary of the changes, with a leading word that explains the section of the code being changed (e.g. `api: fix parsing of prompt field`) . In the description, leave a short 2-3 sentences that explain more about the change and its impact.
32+
* Tests: please add test coverage to changes where possible.
33+
* Minimize dependencies: avoid adding new dependencies unless absolutely necessary.
34+
35+
## Need help?
36+
37+
If you need help with anything, feel free to reach out to us on our [Discord server](https://discord.gg/ollama).

0 commit comments

Comments
 (0)