Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
88bb9e33
Commit
88bb9e33
authored
Aug 14, 2024
by
Daniel Hiltgen
Browse files
Adjust layout to bin+lib/ollama
parent
3b19cdba
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
74 additions
and
63 deletions
+74
-63
Dockerfile
Dockerfile
+16
-7
app/ollama.iss
app/ollama.iss
+6
-6
docs/linux.md
docs/linux.md
+4
-6
envconfig/config.go
envconfig/config.go
+3
-3
gpu/amd_common.go
gpu/amd_common.go
+1
-1
gpu/amd_windows.go
gpu/amd_windows.go
+1
-1
gpu/gpu.go
gpu/gpu.go
+2
-2
llm/generate/gen_linux.sh
llm/generate/gen_linux.sh
+3
-3
llm/generate/gen_windows.ps1
llm/generate/gen_windows.ps1
+21
-21
scripts/build_windows.ps1
scripts/build_windows.ps1
+8
-8
scripts/install.sh
scripts/install.sh
+9
-5
No files found.
Dockerfile
View file @
88bb9e33
...
@@ -95,8 +95,8 @@ ARG AMDGPU_TARGETS
...
@@ -95,8 +95,8 @@ ARG AMDGPU_TARGETS
ENV
GOARCH amd64
ENV
GOARCH amd64
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
OLLAMA_SKIP_STATIC_GENERATE
=
1
OLLAMA_SKIP_CPU_GENERATE
=
1 bash gen_linux.sh
OLLAMA_SKIP_STATIC_GENERATE
=
1
OLLAMA_SKIP_CPU_GENERATE
=
1 bash gen_linux.sh
RUN
mkdir
-p
../../dist/linux-amd64/ollama
_libs
&&
\
RUN
mkdir
-p
../../dist/linux-amd64/
lib/
ollama
&&
\
(
cd
/opt/rocm/lib
&&
tar
cf - rocblas/library
)
|
(
cd
../../dist/linux-amd64/ollama
_libs
&&
tar
xf -
)
(
cd
/opt/rocm/lib
&&
tar
cf - rocblas/library
)
|
(
cd
../../dist/linux-amd64/
lib/
ollama
&&
tar
xf -
)
FROM
--platform=linux/amd64 centos:7 AS cpu-builder-amd64
FROM
--platform=linux/amd64 centos:7 AS cpu-builder-amd64
ARG
CMAKE_VERSION
ARG
CMAKE_VERSION
...
@@ -160,7 +160,7 @@ COPY --from=rocm-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ l
...
@@ -160,7 +160,7 @@ COPY --from=rocm-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ l
ARG
GOFLAGS
ARG
GOFLAGS
ARG
CGO_CFLAGS
ARG
CGO_CFLAGS
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
go build
-trimpath
-o
dist/linux-amd64/ollama .
go build
-trimpath
-o
dist/linux-amd64/
bin/
ollama .
# Intermediate stage used for ./scripts/build_linux.sh
# Intermediate stage used for ./scripts/build_linux.sh
FROM
--platform=linux/arm64 cpu-build-arm64 AS build-arm64
FROM
--platform=linux/arm64 cpu-build-arm64 AS build-arm64
...
@@ -176,20 +176,29 @@ COPY --from=cuda-12-build-server-arm64 /go/src/github.com/ollama/ollama/llm/buil
...
@@ -176,20 +176,29 @@ COPY --from=cuda-12-build-server-arm64 /go/src/github.com/ollama/ollama/llm/buil
ARG
GOFLAGS
ARG
GOFLAGS
ARG
CGO_CFLAGS
ARG
CGO_CFLAGS
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
RUN
--mount
=
type
=
cache,target
=
/root/.ccache
\
go build
-trimpath
-o
dist/linux-arm64/ollama .
go build
-trimpath
-o
dist/linux-arm64/bin/ollama .
# Strip out ROCm dependencies to keep the primary image lean
FROM
--platform=linux/amd64 ubuntu:22.04 as amd64-libs-without-rocm
COPY
--from=build-amd64 /go/src/github.com/ollama/ollama/dist/linux-amd64/lib/ /scratch/
RUN
cd
/scratch/ollama/
&&
rm
-rf
rocblas libamd
*
libdrm
*
libroc
*
libhip
*
libhsa
*
# Runtime stages
# Runtime stages
FROM
--platform=linux/amd64 ubuntu:22.04 as runtime-amd64
FROM
--platform=linux/amd64 ubuntu:22.04 as runtime-amd64
COPY
--from=amd64-libs-without-rocm /scratch/ /lib/
RUN
apt-get update
&&
apt-get
install
-y
ca-certificates
RUN
apt-get update
&&
apt-get
install
-y
ca-certificates
COPY
--from=build-amd64 /go/src/github.com/ollama/ollama/dist/linux-amd64/ollama /bin/ollama
COPY
--from=build-amd64 /go/src/github.com/ollama/ollama/dist/linux-amd64/bin/ /bin/
FROM
--platform=linux/arm64 ubuntu:22.04 as runtime-arm64
FROM
--platform=linux/arm64 ubuntu:22.04 as runtime-arm64
COPY
--from=build-arm64 /go/src/github.com/ollama/ollama/dist/linux-arm64/lib/ /lib/
RUN
apt-get update
&&
apt-get
install
-y
ca-certificates
RUN
apt-get update
&&
apt-get
install
-y
ca-certificates
COPY
--from=build-arm64 /go/src/github.com/ollama/ollama/dist/linux-arm64/
ollama /bin/ollama
COPY
--from=build-arm64 /go/src/github.com/ollama/ollama/dist/linux-arm64/
bin/ /bin/
# Radeon images are much larger so we keep it distinct from the CPU/CUDA image
# Radeon images are much larger so we keep it distinct from the CPU/CUDA image
FROM
--platform=linux/amd64 rocm/dev-centos-7:${ROCM_VERSION}-complete as runtime-rocm
FROM
--platform=linux/amd64 rocm/dev-centos-7:${ROCM_VERSION}-complete as runtime-rocm
RUN
update-pciids
RUN
update-pciids
COPY
--from=build-amd64 /go/src/github.com/ollama/ollama/dist/linux-amd64/ollama /bin/ollama
COPY
--from=build-amd64 /go/src/github.com/ollama/ollama/dist/linux-amd64/bin/ /bin/
RUN
ln
-s
/opt/rocm/lib /lib/ollama
EXPOSE
11434
EXPOSE
11434
ENV
OLLAMA_HOST 0.0.0.0
ENV
OLLAMA_HOST 0.0.0.0
...
...
app/ollama.iss
View file @
88bb9e33
...
@@ -87,11 +87,11 @@ DialogFontSize=12
...
@@ -87,11 +87,11 @@ DialogFontSize=12
[Files]
[Files]
Source: ".\app.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ; Flags: ignoreversion 64bit
Source: ".\app.exe"; DestDir: "{app}"; DestName: "{#MyAppExeName}" ; Flags: ignoreversion 64bit
Source: "..\ollama.exe"; DestDir: "{app}"; Flags: ignoreversion 64bit
Source: "..\ollama.exe"; DestDir: "{app}
\bin
"; Flags: ignoreversion 64bit
Source: "..\dist\windows-{#ARCH}\ollama
_
runners\*"; DestDir: "{app}\ollama
_
runners"; Flags: ignoreversion 64bit recursesubdirs
Source: "..\dist\windows-{#ARCH}\
lib\
ollama
\
runners\*"; DestDir: "{app}\
lib\
ollama
\
runners"; Flags: ignoreversion 64bit recursesubdirs
Source: "..\dist\ollama_welcome.ps1"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\dist\ollama_welcome.ps1"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\assets\app.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\assets\app.ico"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\dist\windows-amd64\ollama
_libs
\*"; DestDir: "{app}\ollama
_libs
\"; Flags: ignoreversion recursesubdirs
Source: "..\dist\windows-amd64\
lib\
ollama\*"; DestDir: "{app}\
lib\
ollama\"; Flags: ignoreversion recursesubdirs
[Icons]
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
...
@@ -99,7 +99,7 @@ Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilen
...
@@ -99,7 +99,7 @@ Name: "{userstartup}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilen
Name: "{userprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
Name: "{userprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; IconFilename: "{app}\app.ico"
[Run]
[Run]
Filename: "{cmd}"; Parameters: "/C set PATH={app};%PATH% & ""{app}\{#MyAppExeName}"""; Flags: postinstall nowait runhidden
Filename: "{cmd}"; Parameters: "/C set PATH={app}
\bin
;%PATH% & ""{app}\{#MyAppExeName}"""; Flags: postinstall nowait runhidden
[UninstallRun]
[UninstallRun]
; Filename: "{cmd}"; Parameters: "/C ""taskkill /im ''{#MyAppExeName}'' /f /t"; Flags: runhidden
; Filename: "{cmd}"; Parameters: "/C ""taskkill /im ''{#MyAppExeName}'' /f /t"; Flags: runhidden
...
@@ -134,8 +134,8 @@ SetupAppRunningError=Another Ollama installer is running.%n%nPlease cancel or fi
...
@@ -134,8 +134,8 @@ SetupAppRunningError=Another Ollama installer is running.%n%nPlease cancel or fi
[Registry]
[Registry]
Root: HKCU; Subkey: "Environment"; \
Root: HKCU; Subkey: "Environment"; \
ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; \
ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}
\bin
"; \
Check: NeedsAddPath('{app}')
Check: NeedsAddPath('{app}
\bin
')
[Code]
[Code]
...
...
docs/linux.md
View file @
88bb9e33
...
@@ -20,13 +20,12 @@ GPU.
...
@@ -20,13 +20,12 @@ GPU.
## Manual install
## Manual install
### Download the `ollama`
binary
### Download the `ollama`
tar file
Ollama is distributed as a
self-contained binary. Download it to a directory in your PATH:
Ollama is distributed as a
tar file including GPU library dependencies.
```
bash
```
bash
sudo
curl
-L
https://ollama.com/download/ollama-linux-amd64
-o
/usr/bin/ollama
curl
-fsSL
https://ollama.com/download/ollama-linux-amd64.tgz |
sudo tar
-C
/usr
-zxf
-
sudo chmod
+x /usr/bin/ollama
```
```
### Adding Ollama as a startup service (recommended)
### Adding Ollama as a startup service (recommended)
...
@@ -96,8 +95,7 @@ curl -fsSL https://ollama.com/install.sh | sh
...
@@ -96,8 +95,7 @@ curl -fsSL https://ollama.com/install.sh | sh
Or by downloading the ollama binary:
Or by downloading the ollama binary:
```
bash
```
bash
sudo
curl
-L
https://ollama.com/download/ollama-linux-amd64
-o
/usr/bin/ollama
curl
-fsSL
https://ollama.com/download/ollama-linux-amd64.tgz |
sudo tar
-C
/usr
-zxf
-
sudo chmod
+x /usr/bin/ollama
```
```
## Installing specific versions
## Installing specific versions
...
...
envconfig/config.go
View file @
88bb9e33
...
@@ -174,7 +174,7 @@ func RunnersDir() (p string) {
...
@@ -174,7 +174,7 @@ func RunnersDir() (p string) {
defer
func
()
{
defer
func
()
{
if
p
==
""
{
if
p
==
""
{
slog
.
Error
(
"unable to locate llm runner directory. Set OLLAMA_RUNNERS_DIR to the location of 'ollama
_
runners'"
)
slog
.
Error
(
"unable to locate llm runner directory. Set OLLAMA_RUNNERS_DIR to the location of 'ollama
/
runners'"
)
}
}
}()
}()
...
@@ -190,7 +190,7 @@ func RunnersDir() (p string) {
...
@@ -190,7 +190,7 @@ func RunnersDir() (p string) {
}
}
var
paths
[]
string
var
paths
[]
string
for
_
,
root
:=
range
[]
string
{
filepath
.
Dir
(
exe
),
cwd
}
{
for
_
,
root
:=
range
[]
string
{
filepath
.
Dir
(
exe
),
filepath
.
Join
(
filepath
.
Dir
(
exe
),
".."
),
cwd
}
{
paths
=
append
(
paths
,
paths
=
append
(
paths
,
root
,
root
,
filepath
.
Join
(
root
,
runtime
.
GOOS
+
"-"
+
runtime
.
GOARCH
),
filepath
.
Join
(
root
,
runtime
.
GOOS
+
"-"
+
runtime
.
GOARCH
),
...
@@ -200,7 +200,7 @@ func RunnersDir() (p string) {
...
@@ -200,7 +200,7 @@ func RunnersDir() (p string) {
// Try a few variations to improve developer experience when building from source in the local tree
// Try a few variations to improve developer experience when building from source in the local tree
for
_
,
path
:=
range
paths
{
for
_
,
path
:=
range
paths
{
candidate
:=
filepath
.
Join
(
path
,
"ollama
_
runners"
)
candidate
:=
filepath
.
Join
(
path
,
"lib"
,
"ollama
"
,
"
runners"
)
if
_
,
err
:=
os
.
Stat
(
candidate
);
err
==
nil
{
if
_
,
err
:=
os
.
Stat
(
candidate
);
err
==
nil
{
p
=
candidate
p
=
candidate
break
break
...
...
gpu/amd_common.go
View file @
88bb9e33
...
@@ -54,7 +54,7 @@ func commonAMDValidateLibDir() (string, error) {
...
@@ -54,7 +54,7 @@ func commonAMDValidateLibDir() (string, error) {
// Installer payload location if we're running the installed binary
// Installer payload location if we're running the installed binary
exe
,
err
:=
os
.
Executable
()
exe
,
err
:=
os
.
Executable
()
if
err
==
nil
{
if
err
==
nil
{
rocmTargetDir
:=
filepath
.
Join
(
filepath
.
Dir
(
exe
),
"ollama
_libs
"
)
rocmTargetDir
:=
filepath
.
Join
(
filepath
.
Dir
(
exe
),
".."
,
"lib"
,
"ollama"
)
if
rocmLibUsable
(
rocmTargetDir
)
{
if
rocmLibUsable
(
rocmTargetDir
)
{
slog
.
Debug
(
"detected ROCM next to ollama executable "
+
rocmTargetDir
)
slog
.
Debug
(
"detected ROCM next to ollama executable "
+
rocmTargetDir
)
return
rocmTargetDir
,
nil
return
rocmTargetDir
,
nil
...
...
gpu/amd_windows.go
View file @
88bb9e33
...
@@ -153,7 +153,7 @@ func AMDValidateLibDir() (string, error) {
...
@@ -153,7 +153,7 @@ func AMDValidateLibDir() (string, error) {
// Installer payload (if we're running from some other location)
// Installer payload (if we're running from some other location)
localAppData
:=
os
.
Getenv
(
"LOCALAPPDATA"
)
localAppData
:=
os
.
Getenv
(
"LOCALAPPDATA"
)
appDir
:=
filepath
.
Join
(
localAppData
,
"Programs"
,
"Ollama"
)
appDir
:=
filepath
.
Join
(
localAppData
,
"Programs"
,
"Ollama"
)
rocmTargetDir
:=
filepath
.
Join
(
appDir
,
"ollama
_libs
"
)
rocmTargetDir
:=
filepath
.
Join
(
appDir
,
".."
,
"lib"
,
"ollama"
)
if
rocmLibUsable
(
rocmTargetDir
)
{
if
rocmLibUsable
(
rocmTargetDir
)
{
slog
.
Debug
(
"detected ollama installed ROCm at "
+
rocmTargetDir
)
slog
.
Debug
(
"detected ollama installed ROCm at "
+
rocmTargetDir
)
return
rocmTargetDir
,
nil
return
rocmTargetDir
,
nil
...
...
gpu/gpu.go
View file @
88bb9e33
...
@@ -653,8 +653,8 @@ func GetDepDir() string {
...
@@ -653,8 +653,8 @@ func GetDepDir() string {
slog
.
Warn
(
"failed to lookup working directory"
,
"error"
,
err
)
slog
.
Warn
(
"failed to lookup working directory"
,
"error"
,
err
)
}
}
// Scan for any of our dependeices, and pick first match
// Scan for any of our dependeices, and pick first match
for
_
,
root
:=
range
[]
string
{
filepath
.
Dir
(
appExe
),
cwd
}
{
for
_
,
root
:=
range
[]
string
{
filepath
.
Dir
(
appExe
),
filepath
.
Join
(
filepath
.
Dir
(
appExe
),
".."
),
cwd
}
{
libDep
:=
"ollama
_libs
"
libDep
:=
filepath
.
Join
(
"lib"
,
"ollama"
)
if
_
,
err
:=
os
.
Stat
(
filepath
.
Join
(
root
,
libDep
));
err
==
nil
{
if
_
,
err
:=
os
.
Stat
(
filepath
.
Join
(
root
,
libDep
));
err
==
nil
{
return
filepath
.
Join
(
root
,
libDep
)
return
filepath
.
Join
(
root
,
libDep
)
}
}
...
...
llm/generate/gen_linux.sh
View file @
88bb9e33
...
@@ -189,7 +189,7 @@ if [ -z "${OLLAMA_SKIP_CUDA_GENERATE}" -a -d "${CUDA_LIB_DIR}" ]; then
...
@@ -189,7 +189,7 @@ if [ -z "${OLLAMA_SKIP_CUDA_GENERATE}" -a -d "${CUDA_LIB_DIR}" ]; then
CMAKE_DEFS
=
"
${
COMMON_CMAKE_DEFS
}
${
CMAKE_DEFS
}
${
ARM64_DEFS
}
${
CMAKE_CUDA_DEFS
}
-DGGML_STATIC=off"
CMAKE_DEFS
=
"
${
COMMON_CMAKE_DEFS
}
${
CMAKE_DEFS
}
${
ARM64_DEFS
}
${
CMAKE_CUDA_DEFS
}
-DGGML_STATIC=off"
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/cuda
${
CUDA_VARIANT
}
"
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/cuda
${
CUDA_VARIANT
}
"
export
LLAMA_SERVER_LDFLAGS
=
"-L
${
CUDA_LIB_DIR
}
-lcudart -lcublas -lcublasLt -lcuda"
export
LLAMA_SERVER_LDFLAGS
=
"-L
${
CUDA_LIB_DIR
}
-lcudart -lcublas -lcublasLt -lcuda"
CUDA_DIST_DIR
=
"
${
CUDA_DIST_DIR
:-${
DIST_BASE
}
/ollama
_libs
}
"
CUDA_DIST_DIR
=
"
${
CUDA_DIST_DIR
:-${
DIST_BASE
}
/
lib/
ollama
}
"
build
build
install
install
echo
"Installing CUDA dependencies in
${
CUDA_DIST_DIR
}
"
echo
"Installing CUDA dependencies in
${
CUDA_DIST_DIR
}
"
...
@@ -213,7 +213,7 @@ if [ -z "${OLLAMA_SKIP_ONEAPI_GENERATE}" -a -d "${ONEAPI_ROOT}" ]; then
...
@@ -213,7 +213,7 @@ if [ -z "${OLLAMA_SKIP_ONEAPI_GENERATE}" -a -d "${ONEAPI_ROOT}" ]; then
CC
=
icx
CC
=
icx
CMAKE_DEFS
=
"
${
COMMON_CMAKE_DEFS
}
${
CMAKE_DEFS
}
-DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL=ON -DGGML_SYCL_F16=OFF"
CMAKE_DEFS
=
"
${
COMMON_CMAKE_DEFS
}
${
CMAKE_DEFS
}
-DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL=ON -DGGML_SYCL_F16=OFF"
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/oneapi"
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/oneapi"
ONEAPI_DIST_DIR
=
"
${
DIST_BASE
}
/ollama
_libs
"
ONEAPI_DIST_DIR
=
"
${
DIST_BASE
}
/
lib/
ollama"
export
LLAMA_SERVER_LDFLAGS
=
"-fsycl -lOpenCL -lmkl_core -lmkl_sycl_blas -lmkl_intel_ilp64 -lmkl_tbb_thread -ltbb"
export
LLAMA_SERVER_LDFLAGS
=
"-fsycl -lOpenCL -lmkl_core -lmkl_sycl_blas -lmkl_intel_ilp64 -lmkl_tbb_thread -ltbb"
DEBUG_FLAGS
=
""
# icx compiles with -O0 if we pass -g, so we must remove it
DEBUG_FLAGS
=
""
# icx compiles with -O0 if we pass -g, so we must remove it
build
build
...
@@ -260,7 +260,7 @@ if [ -z "${OLLAMA_SKIP_ROCM_GENERATE}" -a -d "${ROCM_PATH}" ]; then
...
@@ -260,7 +260,7 @@ if [ -z "${OLLAMA_SKIP_ROCM_GENERATE}" -a -d "${ROCM_PATH}" ]; then
echo
"Building custom ROCM GPU"
echo
"Building custom ROCM GPU"
fi
fi
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/rocm
${
ROCM_VARIANT
}
"
BUILD_DIR
=
"../build/linux/
${
ARCH
}
/rocm
${
ROCM_VARIANT
}
"
ROCM_DIST_DIR
=
"
${
DIST_BASE
}
/ollama
_libs
"
ROCM_DIST_DIR
=
"
${
DIST_BASE
}
/
lib/
ollama"
# TODO figure out how to disable runpath (rpath)
# TODO figure out how to disable runpath (rpath)
# export CMAKE_HIP_FLAGS="-fno-rtlib-add-rpath" # doesn't work
# export CMAKE_HIP_FLAGS="-fno-rtlib-add-rpath" # doesn't work
export
LLAMA_SERVER_LDFLAGS
=
"-L
${
ROCM_PATH
}
/lib -L/opt/amdgpu/lib/x86_64-linux-gnu/ -lhipblas -lrocblas -lamdhip64 -lrocsolver -lamd_comgr -lhsa-runtime64 -lrocsparse -ldrm -ldrm_amdgpu"
export
LLAMA_SERVER_LDFLAGS
=
"-L
${
ROCM_PATH
}
/lib -L/opt/amdgpu/lib/x86_64-linux-gnu/ -lhipblas -lrocblas -lamdhip64 -lrocsolver -lamd_comgr -lhsa-runtime64 -lrocsparse -ldrm -ldrm_amdgpu"
...
...
llm/generate/gen_windows.ps1
View file @
88bb9e33
...
@@ -35,7 +35,7 @@ function init_vars {
...
@@ -35,7 +35,7 @@ function init_vars {
)
)
$
script
:
commonCpuDefs
=
@(
"-DCMAKE_POSITION_INDEPENDENT_CODE=on"
)
$
script
:
commonCpuDefs
=
@(
"-DCMAKE_POSITION_INDEPENDENT_CODE=on"
)
$
script
:
ARCH
=
$
Env
:
PROCESSOR_ARCHITECTURE
.
ToLower
()
$
script
:
ARCH
=
$
Env
:
PROCESSOR_ARCHITECTURE
.
ToLower
()
$
script
:
DIST_BASE
=
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_
runners"
$
script
:
DIST_BASE
=
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama
\
runners"
md
"
$
script
:
DIST_BASE
"
-ea
0
>
$null
md
"
$
script
:
DIST_BASE
"
-ea
0
>
$null
if
(
$
env
:
CGO_CFLAGS
-contains
"-g"
)
{
if
(
$
env
:
CGO_CFLAGS
-contains
"-g"
)
{
$
script
:
cmakeDefs
+=
@(
"-DCMAKE_VERBOSE_MAKEFILE=on"
,
"-DLLAMA_SERVER_VERBOSE=on"
,
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
)
$
script
:
cmakeDefs
+=
@(
"-DCMAKE_VERBOSE_MAKEFILE=on"
,
"-DLLAMA_SERVER_VERBOSE=on"
,
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
)
...
@@ -286,11 +286,11 @@ function build_cuda() {
...
@@ -286,11 +286,11 @@ function build_cuda() {
sign
sign
install
install
md
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
-ea
0
>
$null
md
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
-ea
0
>
$null
write-host
"copying CUDA dependencies to
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
write-host
"copying CUDA dependencies to
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${script:CUDA_LIB_DIR}
\cudart64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${script:CUDA_LIB_DIR}
\cudart64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${script:CUDA_LIB_DIR}
\cublas64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${script:CUDA_LIB_DIR}
\cublas64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${script:CUDA_LIB_DIR}
\cublasLt64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${script:CUDA_LIB_DIR}
\cublasLt64_*.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
}
else
{
}
else
{
write-host
"Skipping CUDA generation step"
write-host
"Skipping CUDA generation step"
}
}
...
@@ -324,17 +324,17 @@ function build_oneapi() {
...
@@ -324,17 +324,17 @@ function build_oneapi() {
sign
sign
install
install
md
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
-ea
0
>
$null
md
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
-ea
0
>
$null
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\libirngmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\libirngmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\libmmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\libmmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_level_zero.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_level_zero.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_unified_runtime.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_unified_runtime.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_win_proxy_loader.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\pi_win_proxy_loader.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\svml_dispmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\svml_dispmd.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\sycl7.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\compiler\latest\bin\sycl7.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_core.2.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_core.2.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_sycl_blas.4.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_sycl_blas.4.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_tbb_thread.2.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\"
cp
"
${env:ONEAPI_ROOT}
\mkl\latest\bin\mkl_tbb_thread.2.dll"
"
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\"
}
else
{
}
else
{
Write-Host
"Skipping oneAPI generation step"
Write-Host
"Skipping oneAPI generation step"
}
}
...
@@ -384,11 +384,11 @@ function build_rocm() {
...
@@ -384,11 +384,11 @@ function build_rocm() {
sign
sign
install
install
md "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\rocblas\library\
" -ea 0 >
$null
md "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\rocblas\library\
" -ea 0 >
$null
cp "
${env:HIP_PATH}
\bin\hipblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\
"
cp "
${env:HIP_PATH}
\bin\hipblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\
"
cp "
${env:HIP_PATH}
\bin\rocblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\
"
cp "
${env:HIP_PATH}
\bin\rocblas.dll
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\
"
# amdhip64.dll dependency comes from the driver and must be installed on the host to use AMD GPUs
# amdhip64.dll dependency comes from the driver and must be installed on the host to use AMD GPUs
cp "
${env:HIP_PATH}
\bin\rocblas\library\*
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\ollama
_libs
\rocblas\library\
"
cp "
${env:HIP_PATH}
\bin\rocblas\library\*
" "
${script:SRC_DIR}
\dist\windows-
${script:ARCH}
\
lib\
ollama\rocblas\library\
"
} else {
} else {
write-host "
Skipping
ROCm
generation
step
"
write-host "
Skipping
ROCm
generation
step
"
}
}
...
...
scripts/build_windows.ps1
View file @
88bb9e33
...
@@ -122,8 +122,8 @@ function buildOllama() {
...
@@ -122,8 +122,8 @@ function buildOllama() {
/csp
"Google Cloud KMS Provider"
/kc
${env:KEY_CONTAINER}
ollama.exe
/csp
"Google Cloud KMS Provider"
/kc
${env:KEY_CONTAINER}
ollama.exe
if
(
$LASTEXITCODE
-ne
0
)
{
exit
(
$LASTEXITCODE
)}
if
(
$LASTEXITCODE
-ne
0
)
{
exit
(
$LASTEXITCODE
)}
}
}
New-Item
-ItemType
Directory
-Path
.
\dist\windows-
${script:TARGET_ARCH}
\
-Force
New-Item
-ItemType
Directory
-Path
.
\dist\windows-
${script:TARGET_ARCH}
\
bin\
-Force
cp
.
\ollama.exe
.
\dist\windows-
${script:TARGET_ARCH}
\
cp
.
\ollama.exe
.
\dist\windows-
${script:TARGET_ARCH}
\
bin\
}
}
function
buildApp
()
{
function
buildApp
()
{
...
@@ -142,22 +142,22 @@ function buildApp() {
...
@@ -142,22 +142,22 @@ function buildApp() {
function
gatherDependencies
()
{
function
gatherDependencies
()
{
write-host
"Gathering runtime dependencies"
write-host
"Gathering runtime dependencies"
cd
"
${script:SRC_DIR}
"
cd
"
${script:SRC_DIR}
"
md
"
${script:DEPS_DIR}
\ollama
_libs
"
-ea
0
>
$null
md
"
${script:DEPS_DIR}
\
lib\
ollama"
-ea
0
>
$null
# TODO - this varies based on host build system and MSVC version - drive from dumpbin output
# TODO - this varies based on host build system and MSVC version - drive from dumpbin output
# currently works for Win11 + MSVC 2019 + Cuda V11
# currently works for Win11 + MSVC 2019 + Cuda V11
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\msvcp140*.dll"
"
${script:DEPS_DIR}
\ollama
_libs
\"
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\msvcp140*.dll"
"
${script:DEPS_DIR}
\
lib\
ollama\"
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\vcruntime140.dll"
"
${script:DEPS_DIR}
\ollama
_libs
\"
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\vcruntime140.dll"
"
${script:DEPS_DIR}
\
lib\
ollama\"
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\vcruntime140_1.dll"
"
${script:DEPS_DIR}
\ollama
_libs
\"
cp
"
${env:VCToolsRedistDir}
\x64\Microsoft.VC*.CRT\vcruntime140_1.dll"
"
${script:DEPS_DIR}
\
lib\
ollama\"
foreach
(
$part
in
$
(
"runtime"
,
"stdio"
,
"filesystem"
,
"math"
,
"convert"
,
"heap"
,
"string"
,
"time"
,
"locale"
,
"environment"
))
{
foreach
(
$part
in
$
(
"runtime"
,
"stdio"
,
"filesystem"
,
"math"
,
"convert"
,
"heap"
,
"string"
,
"time"
,
"locale"
,
"environment"
))
{
cp
"
$
env
:
VCToolsRedistDir
\..\..\..\Tools\Llvm\x64\bin\api-ms-win-crt-
${part}
*.dll"
"
${script:DEPS_DIR}
\ollama
_libs
\"
cp
"
$
env
:
VCToolsRedistDir
\..\..\..\Tools\Llvm\x64\bin\api-ms-win-crt-
${part}
*.dll"
"
${script:DEPS_DIR}
\
lib\
ollama\"
}
}
cp
"
${script:SRC_DIR}
\app\ollama_welcome.ps1"
"
${script:SRC_DIR}
\dist\"
cp
"
${script:SRC_DIR}
\app\ollama_welcome.ps1"
"
${script:SRC_DIR}
\dist\"
if
(
"
${env:KEY_CONTAINER}
"
)
{
if
(
"
${env:KEY_CONTAINER}
"
)
{
write-host
"about to sign"
write-host
"about to sign"
foreach
(
$file
in
(
get-childitem
"
${script:DEPS_DIR}
\ollama
_libs
\cu*.dll"
)
+
@(
"
${script:SRC_DIR}
\dist\ollama_welcome.ps1"
)){
foreach
(
$file
in
(
get-childitem
"
${script:DEPS_DIR}
\
lib\
ollama\cu*.dll"
)
+
@(
"
${script:SRC_DIR}
\dist\ollama_welcome.ps1"
)){
write-host
"signing
$file
"
write-host
"signing
$file
"
&
"
${script:SignTool}
"
sign
/v
/fd
sha256
/t
http://timestamp.digicert.com
/f
"
${script:OLLAMA_CERT}
"
`
&
"
${script:SignTool}
"
sign
/v
/fd
sha256
/t
http://timestamp.digicert.com
/f
"
${script:OLLAMA_CERT}
"
`
/csp
"Google Cloud KMS Provider"
/kc
${env:KEY_CONTAINER}
$file
/csp
"Google Cloud KMS Provider"
/kc
${env:KEY_CONTAINER}
$file
...
...
scripts/install.sh
View file @
88bb9e33
...
@@ -66,7 +66,7 @@ fi
...
@@ -66,7 +66,7 @@ fi
for
BINDIR
in
/usr/local/bin /usr/bin /bin
;
do
for
BINDIR
in
/usr/local/bin /usr/bin /bin
;
do
echo
$PATH
|
grep
-q
$BINDIR
&&
break
||
continue
echo
$PATH
|
grep
-q
$BINDIR
&&
break
||
continue
done
done
OLLAMA_INSTALL_DIR
=
$
{
OLLAMA_INSTALL_DIR
:-
${
BINDIR
}
}
OLLAMA_INSTALL_DIR
=
$
(
dirname
${
BINDIR
}
)
status
"Installing ollama to
$OLLAMA_INSTALL_DIR
"
status
"Installing ollama to
$OLLAMA_INSTALL_DIR
"
$SUDO
install
-o0
-g0
-m755
-d
$BINDIR
$SUDO
install
-o0
-g0
-m755
-d
$BINDIR
...
@@ -77,18 +77,22 @@ if curl -I --silent --fail --location "https://ollama.com/download/ollama-linux-
...
@@ -77,18 +77,22 @@ if curl -I --silent --fail --location "https://ollama.com/download/ollama-linux-
"https://ollama.com/download/ollama-linux-
${
ARCH
}
.tgz
${
VER_PARAM
}
"
|
\
"https://ollama.com/download/ollama-linux-
${
ARCH
}
.tgz
${
VER_PARAM
}
"
|
\
$SUDO
tar
-xzf
-
-C
"
$OLLAMA_INSTALL_DIR
"
$SUDO
tar
-xzf
-
-C
"
$OLLAMA_INSTALL_DIR
"
BUNDLE
=
1
BUNDLE
=
1
if
[
"
$OLLAMA_INSTALL_DIR
/bin/ollama"
!=
"
$BINDIR
/ollama"
]
;
then
status
"Making ollama accessible in the PATH in
$BINDIR
"
$SUDO
ln
-sf
"
$OLLAMA_INSTALL_DIR
/ollama"
"
$BINDIR
/ollama"
fi
else
else
status
"Downloading Linux
${
ARCH
}
CLI"
status
"Downloading Linux
${
ARCH
}
CLI"
curl
--fail
--show-error
--location
--progress-bar
-o
"
$TEMP_DIR
/ollama"
\
curl
--fail
--show-error
--location
--progress-bar
-o
"
$TEMP_DIR
/ollama"
\
"https://ollama.com/download/ollama-linux-
${
ARCH
}${
VER_PARAM
}
"
"https://ollama.com/download/ollama-linux-
${
ARCH
}${
VER_PARAM
}
"
$SUDO
install
-o0
-g0
-m755
$TEMP_DIR
/ollama
$OLLAMA_INSTALL_DIR
/ollama
$SUDO
install
-o0
-g0
-m755
$TEMP_DIR
/ollama
$OLLAMA_INSTALL_DIR
/ollama
BUNDLE
=
0
BUNDLE
=
0
if
[
"
$OLLAMA_INSTALL_DIR
/ollama"
!=
"
$BINDIR
/ollama"
]
;
then
status
"Making ollama accessible in the PATH in
$BINDIR
"
$SUDO
ln
-sf
"
$OLLAMA_INSTALL_DIR
/ollama"
"
$BINDIR
/ollama"
fi
fi
fi
if
[
"
$OLLAMA_INSTALL_DIR
/ollama"
!=
"
$BINDIR
/ollama"
]
;
then
status
"Making ollama accessible in the PATH in
$BINDIR
"
$SUDO
ln
-sf
"
$OLLAMA_INSTALL_DIR
/ollama"
"
$BINDIR
/ollama"
fi
install_success
()
{
install_success
()
{
status
'The Ollama API is now available at 127.0.0.1:11434.'
status
'The Ollama API is now available at 127.0.0.1:11434.'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment