mirror of
https://github.com/containers/ramalama.git
synced 2026-02-05 06:46:39 +01:00
adds docusaurus site and conversion from manpages
Signed-off-by: Ian Eaves <ian.k.eaves@gmail.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
# Configure Podman Machine on Mac for GPU Acceleration
|
||||
|
||||
Leveraging GPU acceleration on a Mac with Podman requires the configurion of
|
||||
Leveraging GPU acceleration on a Mac with Podman requires the configuration of
|
||||
the `libkrun` machine provider.
|
||||
|
||||
This can be done by either setting an environment variable or modifying the
|
||||
|
||||
@@ -27,18 +27,9 @@ RamaLama pulls AI Models from model registries. Starting a chatbot or a rest API
|
||||
|
||||
When both Podman and Docker are installed, RamaLama defaults to Podman, The `RAMALAMA_CONTAINER_ENGINE=docker` environment variable can override this behaviour. When neither are installed RamaLama attempts to run the model with software on the local system.
|
||||
|
||||
Note:
|
||||
Note: On MacOS systems that use Podman for containers, configure the Podman machine to use the `libkrun` machine provider. The `libkrun` provider enables containers within the Podman Machine access to the Mac's GPU. See **[ramalama-macos(7)](ramalama-macos.7.md)** for further information.
|
||||
|
||||
On MacOS systems that use Podman for containers, configure the Podman machine
|
||||
to use the `libkrun` machine provider. The `libkrun` provider enables
|
||||
containers within the Podman Machine access to the Mac's GPU.
|
||||
See **[ramalama-macos(7)](ramalama-macos.7.md)** for further information.
|
||||
|
||||
Note:
|
||||
|
||||
On systems with NVIDIA GPUs, see **[ramalama-cuda(7)](ramalama-cuda.7.md)** to correctly configure the host system.
|
||||
|
||||
Default settings for flags are defined in **[ramalama.conf(5)](ramalama.conf.5.md)**.
|
||||
Note: On systems with NVIDIA GPUs, see **[ramalama-cuda(7)](ramalama-cuda.7.md)** to correctly configure the host system. Default settings for flags are defined in **[ramalama.conf(5)](ramalama.conf.5.md)**.
|
||||
|
||||
## SECURITY
|
||||
|
||||
@@ -93,7 +84,7 @@ the model. The following table specifies the order which RamaLama reads the file
|
||||
| Administrators | /etc/ramamala/shortnames.conf |
|
||||
| Users | $HOME/.config/ramalama/shortnames.conf |
|
||||
|
||||
```code
|
||||
```toml
|
||||
$ cat /usr/share/ramalama/shortnames.conf
|
||||
[shortnames]
|
||||
"tiny" = "ollama://tinyllama"
|
||||
|
||||
@@ -26,6 +26,7 @@ Follow the installation instructions provided in the [NVIDIA Container Toolkit i
|
||||
2. **Update the packages list from the repository:**
|
||||
```bash
|
||||
sudo apt-get update
|
||||
```
|
||||
3. **Install the NVIDIA Container Toolkit packages:**
|
||||
```bash
|
||||
sudo apt-get install -y nvidia-container-toolkit
|
||||
@@ -47,9 +48,9 @@ Follow the installation instructions provided in the [NVIDIA Container Toolkit i
|
||||
Open and edit the NVIDIA container runtime configuration:
|
||||
```bash
|
||||
nvidia-ctk cdi list
|
||||
```
|
||||
**We Should See Something Like This**
|
||||
```
|
||||
**We Should See Something Like This**
|
||||
```bash
|
||||
INFO[0000] Found 1 CDI devices
|
||||
nvidia.com/gpu=all
|
||||
```
|
||||
|
||||
20
docsite/.gitignore
vendored
Normal file
20
docsite/.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# Dependencies
|
||||
/node_modules
|
||||
|
||||
# Production
|
||||
/build
|
||||
|
||||
# Generated files
|
||||
.docusaurus
|
||||
.cache-loader
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
51
docsite/Makefile
Normal file
51
docsite/Makefile
Normal file
@@ -0,0 +1,51 @@
|
||||
# RamaLama Documentation Site Makefile
|
||||
#
|
||||
# This Makefile provides commands for building and managing the RamaLama
|
||||
# documentation site powered by Docusaurus.
|
||||
|
||||
.PHONY: help convert dev build serve clean install
|
||||
|
||||
# Default target - show help
|
||||
help: ## Show this help message
|
||||
@echo "RamaLama Documentation Site"
|
||||
@echo "=========================="
|
||||
@echo
|
||||
@echo "Available commands:"
|
||||
@echo
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " \033[36m%-12s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
@echo
|
||||
|
||||
convert: ## Convert manpages from ../docs to MDX format for docsite
|
||||
@echo "Converting manpages to MDX format..."
|
||||
@python3 convert_manpages.py
|
||||
@echo "✅ Manpage conversion complete!"
|
||||
|
||||
install: ## Install dependencies
|
||||
@echo "Installing dependencies..."
|
||||
@npm install
|
||||
@echo "✅ Dependencies installed!"
|
||||
|
||||
dev: ## Start the development server
|
||||
@echo "Starting development server..."
|
||||
@npm start
|
||||
|
||||
build: ## Build the production site
|
||||
@echo "Building production site..."
|
||||
@npm run build
|
||||
@echo "✅ Build complete! Output in ./build/"
|
||||
|
||||
serve: ## Serve the built site locally
|
||||
@echo "Serving built site locally..."
|
||||
@npm run serve
|
||||
|
||||
clean: ## Clean build artifacts and node_modules
|
||||
@echo "Cleaning build artifacts..."
|
||||
@rm -rf build .docusaurus node_modules
|
||||
@echo "✅ Clean complete!"
|
||||
|
||||
all: install convert build ## Install deps, convert manpages, and build site
|
||||
|
||||
# Development workflow targets
|
||||
quick-dev: convert dev ## Convert manpages and start dev server
|
||||
|
||||
rebuild: clean install convert build ## Full rebuild from scratch
|
||||
352
docsite/convert_manpages.py
Normal file
352
docsite/convert_manpages.py
Normal file
@@ -0,0 +1,352 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Convert RamaLama manpages to Docusaurus MDX format
|
||||
"""
|
||||
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_category_info(filename):
|
||||
"""Determine category and output path based on manpage section"""
|
||||
if filename.endswith('.1.md'):
|
||||
return 'commands', 'commands/ramalama'
|
||||
if filename.endswith('.5.md'):
|
||||
return 'configuration', 'configuration'
|
||||
if filename.endswith('.7.md'):
|
||||
return 'platform-guides', 'platform-guides'
|
||||
return 'misc', 'misc'
|
||||
|
||||
|
||||
def extract_title_and_description(content, filename):
|
||||
"""Extract title and description from manpage content and filename"""
|
||||
lines = content.split('\n')
|
||||
|
||||
# Generate title from filename pattern
|
||||
base_name = os.path.basename(filename)
|
||||
if base_name == 'ramalama.1.md':
|
||||
title = "ramalama" # Base command page
|
||||
if base_name.startswith('ramalama-') and base_name.endswith('.1.md'):
|
||||
# Command: ramalama-chat.1.md -> chat (just the subcommand name)
|
||||
command = base_name.replace('ramalama-', '').replace('.1.md', '')
|
||||
title = command
|
||||
if base_name.startswith('ramalama-') and base_name.endswith('.7.md'):
|
||||
# Platform guide: ramalama-cuda.7.md -> CUDA Setup
|
||||
platform = base_name.replace('ramalama-', '').replace('.7.md', '')
|
||||
|
||||
if platform == 'macos':
|
||||
platform = 'macOS'
|
||||
else:
|
||||
platform = platform.upper()
|
||||
|
||||
title = f"{platform} Setup"
|
||||
if base_name.endswith('.5.md'):
|
||||
# Config: ramalama.conf.5.md -> ramalama.conf
|
||||
title = base_name.replace('.5.md', '')
|
||||
else:
|
||||
# Fallback
|
||||
title = base_name.replace('.md', '').replace('-', ' ')
|
||||
|
||||
# Find description from NAME section
|
||||
description = ""
|
||||
for i, line in enumerate(lines):
|
||||
if line.strip() == "## NAME":
|
||||
if i + 1 < len(lines):
|
||||
name_line = lines[i + 1].strip()
|
||||
if ' - ' in name_line:
|
||||
_, description = name_line.split(' - ', 1)
|
||||
break
|
||||
|
||||
# Fallback description if not found
|
||||
if not description:
|
||||
if '.1.md' in filename:
|
||||
description = "RamaLama command reference"
|
||||
elif '.7.md' in filename:
|
||||
description = "Platform-specific setup guide"
|
||||
elif '.5.md' in filename:
|
||||
description = "Configuration file reference"
|
||||
else:
|
||||
description = "RamaLama documentation"
|
||||
|
||||
return title.strip(), description.strip()
|
||||
|
||||
|
||||
def detect_code_language(content):
|
||||
"""Detect the language of a code block based on its content"""
|
||||
# Common indicators for different languages
|
||||
if re.search(r'\$\s*(podman|docker|ramalama|curl|wget|sudo|apt|dnf|yum|pacman|brew)\s', content):
|
||||
return 'bash'
|
||||
if re.search(
|
||||
r'(import\s+[a-zA-Z_][a-zA-Z0-9_]*|def\s+[a-zA-Z_][a-zA-Z0-9_]*\(|class\s+[a-zA-Z_][a-zA-Z0-9_]*:)', content
|
||||
):
|
||||
return 'python'
|
||||
if re.search(
|
||||
r'(function\s+[a-zA-Z_$][a-zA-Z0-9_$]*\s*\(|const\s+[a-zA-Z_$][a-zA-Z0-9_$]*\s*=|let\s+[a-zA-Z_$] \
|
||||
[a-zA-Z0-9_$]*\s*=|var\s+[a-zA-Z_$][a-zA-Z0-9_$]*\s*=)',
|
||||
content,
|
||||
):
|
||||
return 'javascript'
|
||||
if re.search(
|
||||
r'(package\s+[a-zA-Z_][a-zA-Z0-9_]*|func\s+[a-zA-Z_][a-zA-Z0-9_]*\(|type\s+[a-zA-Z_][a-zA-Z0-9_]*\s+struct)',
|
||||
content,
|
||||
):
|
||||
return 'go'
|
||||
if re.search(r'(\[.*\]|\{.*\})\s*=', content):
|
||||
return 'toml'
|
||||
|
||||
return 'text'
|
||||
|
||||
|
||||
def convert_markdown_to_mdx(content, filename):
|
||||
"""Convert manpage markdown to MDX format"""
|
||||
|
||||
# Extract title and description
|
||||
title, description = extract_title_and_description(content, filename)
|
||||
|
||||
# Remove the first line (% directive) if present
|
||||
lines = content.split('\n')
|
||||
if lines[0].startswith('%'):
|
||||
lines = lines[1:]
|
||||
|
||||
content = '\n'.join(lines)
|
||||
|
||||
# Convert NAME section
|
||||
content = re.sub(r'## NAME\n([^\n]+)', '', content, flags=re.MULTILINE)
|
||||
|
||||
# Convert SYNOPSIS to proper heading
|
||||
content = re.sub(r'## SYNOPSIS', '## Synopsis', content)
|
||||
|
||||
# Convert DESCRIPTION
|
||||
content = re.sub(r'## DESCRIPTION', '## Description', content)
|
||||
|
||||
# Convert OPTIONS to Options
|
||||
content = re.sub(r'## OPTIONS', '## Options', content)
|
||||
|
||||
# Convert EXAMPLES to Examples
|
||||
content = re.sub(r'## EXAMPLES', '## Examples', content)
|
||||
|
||||
# Convert SEE ALSO to See Also
|
||||
content = re.sub(r'## SEE ALSO', '## See Also', content)
|
||||
|
||||
# Convert HISTORY to bottom note
|
||||
history_pattern = r'## HISTORY\n(.+?)(?=\n##|\n$|$)'
|
||||
history_match = re.search(history_pattern, content, re.DOTALL)
|
||||
if history_match:
|
||||
history_text = history_match.group(1).strip()
|
||||
content = re.sub(history_pattern, '', content, flags=re.DOTALL)
|
||||
# Add history as footer
|
||||
content += f"\n\n---\n\n*{history_text}*"
|
||||
|
||||
# Convert bold markdown references like **[ramalama(1)](ramalama.1.md)** to links
|
||||
content = re.sub(r'\*\*\[([^\]]+)\]\(([^)]+)\)\*\*', r'[\1](\2)', content)
|
||||
|
||||
# Convert internal manpage links to docsite links
|
||||
def convert_link(match):
|
||||
text = match.group(1)
|
||||
link = match.group(2)
|
||||
|
||||
# Skip processing for external URLs
|
||||
if link.startswith(('http://', 'https://')):
|
||||
return f'[{text}]({link})'
|
||||
|
||||
# All files are now in subdirectories, so use relative paths appropriately
|
||||
if filename.endswith('.1.md'):
|
||||
# From commands/ramalama/ directory
|
||||
base_path = "../../"
|
||||
elif filename.endswith('.5.md'):
|
||||
# From configuration/ directory
|
||||
base_path = "../"
|
||||
elif filename.endswith('.7.md'):
|
||||
# From platform-guides/ directory
|
||||
base_path = "../"
|
||||
else:
|
||||
base_path = "./"
|
||||
|
||||
if link.endswith('.1.md'):
|
||||
# Command reference
|
||||
command_name = link.replace('ramalama-', '').replace('.1.md', '')
|
||||
if command_name == 'ramalama':
|
||||
if filename == 'ramalama.1.md':
|
||||
return f'[{text}](#)' # Self-reference
|
||||
else:
|
||||
return f'[{text}]({base_path}commands/ramalama/ramalama)'
|
||||
return f'[{text}]({base_path}commands/ramalama/{command_name})'
|
||||
if link.endswith('.5.md'):
|
||||
# Configuration file
|
||||
config_name = link.replace('ramalama.', '').replace('.5.md', '')
|
||||
return f'[{text}]({base_path}configuration/{config_name})'
|
||||
if link.endswith('.7.md'):
|
||||
# Platform guide
|
||||
guide_name = link.replace('ramalama-', '').replace('.7.md', '')
|
||||
return f'[{text}]({base_path}platform-guides/{guide_name})'
|
||||
|
||||
return f'[{text}]({link})'
|
||||
|
||||
content = re.sub(r'\[([^\]]+)\]\(([^)]+\.md)\)', convert_link, content)
|
||||
|
||||
# Convert Notes to MDX admonitions
|
||||
# Handle blockquote notes: > **Note:** text
|
||||
content = re.sub(
|
||||
r' > \*\*Note:\*\*(.*?)(?=\n(?! >)|\n\n|$)', r':::note\n\1\n:::', content, flags=re.MULTILINE | re.DOTALL
|
||||
)
|
||||
content = re.sub(
|
||||
r'> \*\*Note:\*\*(.*?)(?=\n(?!>)|\n\n|$)', r':::note\n\1\n:::', content, flags=re.MULTILINE | re.DOTALL
|
||||
)
|
||||
# Handle blockquote NOTE (all caps): > **NOTE:** text
|
||||
content = re.sub(
|
||||
r' > \*\*NOTE:\*\*(.*?)(?=\n(?! >)|\n\n|$)', r':::note\n\1\n:::', content, flags=re.MULTILINE | re.DOTALL
|
||||
)
|
||||
content = re.sub(
|
||||
r'> \*\*NOTE:\*\*(.*?)(?=\n(?!>)|\n\n|$)', r':::note\n\1\n:::', content, flags=re.MULTILINE | re.DOTALL
|
||||
)
|
||||
# Handle standalone Note: followed by content (possibly with blank lines)
|
||||
content = re.sub(
|
||||
r'^Note:\s*\n\n(.*?)(?=\n\nNote:|\n\n[A-Z][A-Z]|\n\n##|$)',
|
||||
r':::note\n\1\n:::',
|
||||
content,
|
||||
flags=re.MULTILINE | re.DOTALL,
|
||||
)
|
||||
# Handle standalone Note: with immediate content
|
||||
content = re.sub(
|
||||
r'^Note:(.*?)(?=\n\nNote:|\n\n[A-Z][A-Z]|\n\n##|$)',
|
||||
r':::note\n\1\n:::',
|
||||
content,
|
||||
flags=re.MULTILINE | re.DOTALL,
|
||||
)
|
||||
# Handle NOTE: text (all caps)
|
||||
content = re.sub(r'^NOTE:(.*?)(?=\n\n|\n[A-Z]|\n#|$)', r':::note\n\1\n:::', content, flags=re.MULTILINE | re.DOTALL)
|
||||
|
||||
# Fix code blocks - detect and set appropriate language
|
||||
def process_code_block(match):
|
||||
block_content = match.group(1) if match.group(1) else ""
|
||||
# Remove any internal code block markers
|
||||
block_content = re.sub(r'```[a-zA-Z0-9_+-]*\s*\n?', '', block_content)
|
||||
# Detect language if not explicitly specified
|
||||
if match.group(0).startswith('```') and len(match.group(0).split('\n')[0]) > 3:
|
||||
lang = match.group(0).split('\n')[0].replace('```', '')
|
||||
else:
|
||||
lang = detect_code_language(block_content)
|
||||
return f'```{lang}\n{block_content.strip()}\n```'
|
||||
|
||||
# Process all code blocks
|
||||
content = re.sub(r'```(?:[a-zA-Z0-9_+-]*)\n((?:(?!```)[\s\S])*?)```', process_code_block, content)
|
||||
|
||||
# Escape email addresses for MDX - replace @ with @
|
||||
|
||||
def _escape_email(match):
|
||||
email = match.group(1).replace('@', '@')
|
||||
return f"<{email}>"
|
||||
|
||||
content = re.sub(r'<([^>]+@[^>]+)>', _escape_email, content)
|
||||
|
||||
# Clean up extra whitespace
|
||||
content = re.sub(r'\n{3,}', '\n\n', content)
|
||||
content = content.strip()
|
||||
|
||||
# Create frontmatter
|
||||
frontmatter = f"""---
|
||||
title: {title}
|
||||
description: {description}
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: {filename}
|
||||
---
|
||||
|
||||
# {title}
|
||||
|
||||
"""
|
||||
|
||||
return frontmatter + content
|
||||
|
||||
|
||||
def get_output_filename(input_filename):
|
||||
"""Generate output filename from input filename"""
|
||||
base = os.path.basename(input_filename)
|
||||
|
||||
if base == 'ramalama.1.md':
|
||||
# Base ramalama command goes in commands directory
|
||||
return 'ramalama.mdx'
|
||||
if base.startswith('ramalama-') and base.endswith('.1.md'):
|
||||
# Command: ramalama-chat.1.md -> chat.mdx
|
||||
return base.replace('ramalama-', '').replace('.1.md', '.mdx')
|
||||
if base.startswith('ramalama-') and base.endswith('.7.md'):
|
||||
# Platform guide: ramalama-cuda.7.md -> cuda.mdx
|
||||
return base.replace('ramalama-', '').replace('.7.md', '.mdx')
|
||||
if base.endswith('.5.md'):
|
||||
# Config: ramalama.conf.5.md -> conf.mdx
|
||||
return base.replace('ramalama.', '').replace('.5.md', '.mdx')
|
||||
|
||||
return base.replace('.md', '.mdx')
|
||||
|
||||
|
||||
def clean_auto_generated_files(docsite_docs_dir):
|
||||
"""Remove all auto-generated MDX files from previous runs"""
|
||||
print("Cleaning up auto-generated files from previous runs...")
|
||||
|
||||
# Find all .mdx files recursively
|
||||
mdx_files = glob.glob(str(docsite_docs_dir / '**/*.mdx'), recursive=True)
|
||||
|
||||
cleaned_count = 0
|
||||
for mdx_file in mdx_files:
|
||||
try:
|
||||
with open(mdx_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
# Check if file has auto-generated marker
|
||||
if '# This file is auto-generated from manpages' in content:
|
||||
os.remove(mdx_file)
|
||||
cleaned_count += 1
|
||||
print(f" Removed: {mdx_file}")
|
||||
except Exception as e:
|
||||
print(f" Warning: Could not process {mdx_file}: {e}")
|
||||
|
||||
print(f"✅ Cleaned up {cleaned_count} auto-generated files")
|
||||
|
||||
|
||||
def main():
|
||||
docs_dir = Path('../docs')
|
||||
docsite_docs_dir = Path('./docs')
|
||||
|
||||
# Clean up auto-generated files from previous runs
|
||||
clean_auto_generated_files(docsite_docs_dir)
|
||||
|
||||
# Find all manpage files
|
||||
manpage_files = glob.glob(str(docs_dir / '*.md'))
|
||||
manpage_files = [f for f in manpage_files if not f.endswith('README.md')]
|
||||
|
||||
print(f"\nFound {len(manpage_files)} manpage files to convert")
|
||||
|
||||
for input_file in manpage_files:
|
||||
filename = os.path.basename(input_file)
|
||||
print(f"Converting {filename}...")
|
||||
|
||||
# Convert all files (overwriting existing ones)
|
||||
|
||||
# Read input file
|
||||
with open(input_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# Convert to MDX
|
||||
mdx_content = convert_markdown_to_mdx(content, filename)
|
||||
|
||||
# Determine output directory and filename
|
||||
output_filename = get_output_filename(filename)
|
||||
|
||||
# All manpage files go to their category directories
|
||||
category, subdir = get_category_info(filename)
|
||||
output_dir = docsite_docs_dir / subdir
|
||||
output_path = output_dir / output_filename
|
||||
# Create output directory if it doesn't exist
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Write output file
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
f.write(mdx_content)
|
||||
|
||||
print(f" -> {output_path}")
|
||||
|
||||
print("\nConversion complete!")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
9
docsite/docs/commands/_category_.json
Normal file
9
docsite/docs/commands/_category_.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"label": "Commands",
|
||||
"position": 4,
|
||||
"collapsed": true,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "RamaLama command reference documentation."
|
||||
}
|
||||
}
|
||||
8
docsite/docs/commands/ramalama/_category_.json
Normal file
8
docsite/docs/commands/ramalama/_category_.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "ramalama",
|
||||
"position": 1,
|
||||
"link": {
|
||||
"type": "doc",
|
||||
"id": "commands/ramalama/ramalama"
|
||||
}
|
||||
}
|
||||
163
docsite/docs/commands/ramalama/bench.mdx
Normal file
163
docsite/docs/commands/ramalama/bench.mdx
Normal file
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: ramalama bench.1
|
||||
description: benchmark specified AI Model
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-bench.1.md
|
||||
---
|
||||
|
||||
# ramalama bench.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama bench** [*options*] *model* [arg ...]
|
||||
|
||||
## MODEL TRANSPORTS
|
||||
|
||||
| Transports | Prefix | Web Site |
|
||||
| ------------- | ------ | --------------------------------------------------- |
|
||||
| URL based | https://, http://, file:// | `https://web.site/ai.model`, `file://tmp/ai.model`|
|
||||
| HuggingFace | huggingface://, hf://, hf.co/ | [`huggingface.co`](https://www.huggingface.co)|
|
||||
| ModelScope | modelscope://, ms:// | [`modelscope.cn`](https://modelscope.cn/)|
|
||||
| Ollama | ollama:// | [`ollama.com`](https://www.ollama.com)|
|
||||
| OCI Container Registries | oci:// | [`opencontainers.org`](https://opencontainers.org)|
|
||||
|||Examples: [`quay.io`](https://quay.io), [`Docker Hub`](https://docker.io),[`Artifactory`](https://artifactory.com)|
|
||||
|
||||
RamaLama defaults to the Ollama registry transport. This default can be overridden in the `ramalama.conf` file or via the RAMALAMA_TRANSPORTS
|
||||
environment. `export RAMALAMA_TRANSPORT=huggingface` Changes RamaLama to use huggingface transport.
|
||||
|
||||
Modify individual model transports by specifying the `huggingface://`, `oci://`, `ollama://`, `https://`, `http://`, `file://` prefix to the model.
|
||||
|
||||
URL support means if a model is on a web site or even on your local system, you can run it directly.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--device**
|
||||
Add a host device to the container. Optional permissions parameter can
|
||||
be used to specify device permissions by combining r for read, w for
|
||||
write, and m for mknod(2).
|
||||
|
||||
Example: --device=/dev/dri/renderD128:/dev/xvdc:rwm
|
||||
|
||||
#### **--env**=
|
||||
|
||||
Set environment variables inside of the container.
|
||||
|
||||
This option allows arbitrary environment variables that are available for the
|
||||
process to be launched inside of the container. If an environment variable is
|
||||
specified without a value, the container engine checks the host environment
|
||||
for a value and set the variable only if it is set on the host.
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--image**=IMAGE
|
||||
OCI container image to run with specified AI model. RamaLama defaults to using
|
||||
images based on the accelerator it discovers. For example:
|
||||
`quay.io/ramalama/ramalama`. See the table below for all default images.
|
||||
The default image tag is based on the minor version of the RamaLama package.
|
||||
Version 0.11.1 of RamaLama pulls an image with a `:0.11` tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
|
||||
|
||||
The default can be overridden in the ramalama.conf file or via the
|
||||
RAMALAMA_IMAGE environment variable. `export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2` tells
|
||||
RamaLama to use the `quay.io/ramalama/aiimage:1.2` image.
|
||||
|
||||
Accelerated images:
|
||||
|
||||
| Accelerator | Image |
|
||||
| ------------------------| -------------------------- |
|
||||
| CPU, Apple | quay.io/ramalama/ramalama |
|
||||
| HIP_VISIBLE_DEVICES | quay.io/ramalama/rocm |
|
||||
| CUDA_VISIBLE_DEVICES | quay.io/ramalama/cuda |
|
||||
| ASAHI_VISIBLE_DEVICES | quay.io/ramalama/asahi |
|
||||
| INTEL_VISIBLE_DEVICES | quay.io/ramalama/intel-gpu |
|
||||
| ASCEND_VISIBLE_DEVICES | quay.io/ramalama/cann |
|
||||
| MUSA_VISIBLE_DEVICES | quay.io/ramalama/musa |
|
||||
|
||||
#### **--keep-groups**
|
||||
pass --group-add keep-groups to podman (default: False)
|
||||
If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
|
||||
|
||||
#### **--name**, **-n**
|
||||
name of the container to run the Model in
|
||||
|
||||
#### **--network**=*none*
|
||||
set the network mode for the container
|
||||
|
||||
#### **--ngl**
|
||||
number of gpu layers, 0 means CPU inferencing, 999 means use max layers (default: -1)
|
||||
The default -1, means use whatever is automatically deemed appropriate (0 or 999)
|
||||
|
||||
#### **--oci-runtime**
|
||||
|
||||
Override the default OCI runtime used to launch the container. Container
|
||||
engines like Podman and Docker, have their own default oci runtime that they
|
||||
use. Using this option RamaLama will override these defaults.
|
||||
|
||||
On Nvidia based GPU systems, RamaLama defaults to using the
|
||||
`nvidia-container-runtime`. Use this option to override this selection.
|
||||
|
||||
#### **--privileged**
|
||||
By default, RamaLama containers are unprivileged (=false) and cannot, for
|
||||
example, modify parts of the operating system. This is because by de‐
|
||||
fault a container is only allowed limited access to devices. A "privi‐
|
||||
leged" container is given the same access to devices as the user launch‐
|
||||
ing the container, with the exception of virtual consoles (/dev/tty\d+)
|
||||
when running in systemd mode (--systemd=always).
|
||||
|
||||
A privileged container turns off the security features that isolate the
|
||||
container from the host. Dropped Capabilities, limited devices, read-
|
||||
only mount points, Apparmor/SELinux separation, and Seccomp filters are
|
||||
all disabled. Due to the disabled security features, the privileged
|
||||
field should almost never be set as containers can easily break out of
|
||||
confinement.
|
||||
|
||||
Containers running in a user namespace (e.g., rootless containers) can‐
|
||||
not have more privileges than the user that launched them.
|
||||
|
||||
#### **--pull**=*policy*
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
#### **--seed**=
|
||||
Specify seed rather than using random seed model interaction
|
||||
|
||||
#### **--selinux**=*true*
|
||||
Enable SELinux container separation
|
||||
|
||||
#### **--temp**="0.8"
|
||||
Temperature of the response from the AI Model
|
||||
llama.cpp explains this as:
|
||||
|
||||
The lower the number is, the more deterministic the response.
|
||||
|
||||
The higher the number is the more creative the response is, but more likely to hallucinate when set too high.
|
||||
|
||||
Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories
|
||||
|
||||
#### **--threads**, **-t**
|
||||
Maximum number of cpu threads to use.
|
||||
The default is to use half the cores available on this system for the number of threads.
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
## Description
|
||||
Benchmark specified AI Model.
|
||||
|
||||
## Examples
|
||||
|
||||
```text
|
||||
ramalama bench granite3-moe
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Jan 2025, Originally compiled by Eric Curtin <ecurtin@redhat.com>*
|
||||
66
docsite/docs/commands/ramalama/chat.mdx
Normal file
66
docsite/docs/commands/ramalama/chat.mdx
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
title: ramalama chat.1
|
||||
description: OpenAI chat with the specified REST API URL
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-chat.1.md
|
||||
---
|
||||
|
||||
# ramalama chat.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama chat** [*options*] [arg...]
|
||||
|
||||
positional arguments:
|
||||
ARGS overrides the default prompt, and the output is
|
||||
returned without entering the chatbot
|
||||
|
||||
## Description
|
||||
Chat with an OpenAI Rest API
|
||||
|
||||
## Options
|
||||
|
||||
#### **--api-key**
|
||||
OpenAI-compatible API key.
|
||||
Can also be set via the API_KEY environment variable.
|
||||
|
||||
#### **--color**
|
||||
Indicate whether or not to use color in the chat.
|
||||
Possible values are "never", "always" and "auto". (default: auto)
|
||||
|
||||
#### **--help**, **-h**
|
||||
Show this help message and exit
|
||||
|
||||
#### **--list**
|
||||
List the available models at an endpoint
|
||||
|
||||
#### **--model**=MODEL
|
||||
Model for inferencing (may not be required for endpoints that only serve one model)
|
||||
|
||||
#### **--prefix**
|
||||
Prefix for the user prompt (default: 🦭 > )
|
||||
|
||||
#### **--rag**=path
|
||||
A file or directory of files to be loaded and provided as local context in the chat history.
|
||||
|
||||
#### **--url**=URL
|
||||
The host to send requests to (default: http://127.0.0.1:8080)
|
||||
|
||||
## Examples
|
||||
|
||||
Communicate with the default local OpenAI REST API. (http://127.0.0.1:8080)
|
||||
With Podman containers.
|
||||
```bash
|
||||
$ ramalama chat
|
||||
🦭 >
|
||||
|
||||
Communicate with an alternative OpenAI REST API URL. With Docker containers.
|
||||
$ ramalama chat --url http://localhost:1234
|
||||
🐋 >
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Jun 2025, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
81
docsite/docs/commands/ramalama/containers.mdx
Normal file
81
docsite/docs/commands/ramalama/containers.mdx
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
title: ramalama containers.1
|
||||
description: list all RamaLama containers
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-containers.1.md
|
||||
---
|
||||
|
||||
# ramalama containers.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama containers** [*options*]
|
||||
|
||||
**ramalama ps** [*options*]
|
||||
|
||||
## Description
|
||||
List all containers running AI Models
|
||||
|
||||
Command conflicts with the --nocontainer option.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--format**=*format*
|
||||
pretty-print containers to JSON or using a Go template
|
||||
|
||||
Valid placeholders for the Go template are listed below:
|
||||
|
||||
| **Placeholder** | **Description** |
|
||||
|--------------------|----------------------------------------------|
|
||||
| .Command | Quoted command used |
|
||||
| .Created ... | Creation time for container, Y-M-D H:M:S |
|
||||
| .CreatedAt | Creation time for container (same as above) |
|
||||
| .CreatedHuman | Creation time, relative |
|
||||
| .ExitCode | Container exit code |
|
||||
| .Exited | "true" if container has exited |
|
||||
| .ExitedAt | Time (epoch seconds) that container exited |
|
||||
| .ExposedPorts ... | Map of exposed ports on this container |
|
||||
| .ID | Container ID |
|
||||
| .Image | Image Name/ID |
|
||||
| .ImageID | Image ID |
|
||||
| .Label *string* | Specified label of the container |
|
||||
| .Labels ... | All the labels assigned to the container |
|
||||
| .Names | Name of container |
|
||||
| .Networks | Show all networks connected to the container |
|
||||
| .Pid | Process ID on host system |
|
||||
| .Ports | Forwarded and exposed ports |
|
||||
| .RunningFor | Time elapsed since container was started |
|
||||
| .Size | Size of container |
|
||||
| .StartedAt | Time (epoch seconds) the container started |
|
||||
| .State | Human-friendly description of ctr state |
|
||||
| .Status | Status of container |
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--no-trunc**
|
||||
Display the extended information
|
||||
|
||||
#### **--noheading**, **-n**
|
||||
Do not print heading
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
```bash
|
||||
$ ramalama containers
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
85ad75ecf866 quay.io/ramalama/ramalama:latest /usr/bin/ramalama... 5 hours ago Up 5 hours 0.0.0.0:8080->8080/tcp ramalama_s3Oh6oDfOP
|
||||
85ad75ecf866 quay.io/ramalama/ramalama:latest /usr/bin/ramalama... 4 minutes ago Exited (0) 4 minutes ago granite-server
|
||||
```
|
||||
|
||||
```bash
|
||||
$ ramalama ps --noheading --format "{{ .Names }}"
|
||||
ramalama_s3Oh6oDfOP
|
||||
granite-server
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
72
docsite/docs/commands/ramalama/convert.mdx
Normal file
72
docsite/docs/commands/ramalama/convert.mdx
Normal file
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: ramalama convert.1
|
||||
description: convert AI Models from local storage to OCI Image
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-convert.1.md
|
||||
---
|
||||
|
||||
# ramalama convert.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama convert** [*options*] *model* [*target*]
|
||||
|
||||
## Description
|
||||
Convert specified AI Model to an OCI Formatted AI Model
|
||||
|
||||
The model can be from RamaLama model storage in Huggingface, Ollama, or a local model stored on disk. Converting from an OCI model is not supported.
|
||||
|
||||
:::note
|
||||
The convert command must be run with containers. Use of the --nocontainer option is not allowed.
|
||||
:::
|
||||
|
||||
## Options
|
||||
|
||||
#### **--gguf**=*Q2_K* | *Q3_K_S* | *Q3_K_M* | *Q3_K_L* | *Q4_0* | *Q4_K_S* | *Q4_K_M* | *Q5_0* | *Q5_K_S* | *Q5_K_M* | *Q6_K* | *Q8_0*
|
||||
|
||||
Convert Safetensor models into a GGUF with the specified quantization format. To learn more about model quantization, read llama.cpp documentation:
|
||||
https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/README.md
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--network**=*none*
|
||||
sets the configuration for network namespaces when handling RUN instructions
|
||||
|
||||
#### **--type**=*raw* | *car*
|
||||
|
||||
type of OCI Model Image to convert.
|
||||
|
||||
| Type | Description |
|
||||
| ---- | ------------------------------------------------------------- |
|
||||
| car | Includes base image with the model stored in a /models subdir |
|
||||
| raw | Only the model and a link file model.file to it stored at / |
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
Generate an oci model out of an Ollama model.
|
||||
```bash
|
||||
$ ramalama convert ollama://tinyllama:latest oci://quay.io/rhatdan/tiny:latest
|
||||
Building quay.io/rhatdan/tiny:latest...
|
||||
STEP 1/2: FROM scratch
|
||||
STEP 2/2: COPY sha256:2af3b81862c6be03c769683af18efdadb2c33f60ff32ab6f83e42c043d6c7816 /model
|
||||
--> Using cache 69db4a10191c976d2c3c24da972a2a909adec45135a69dbb9daeaaf2a3a36344
|
||||
COMMIT quay.io/rhatdan/tiny:latest
|
||||
--> 69db4a10191c
|
||||
Successfully tagged quay.io/rhatdan/tiny:latest
|
||||
69db4a10191c976d2c3c24da972a2a909adec45135a69dbb9daeaaf2a3a36344
|
||||
```
|
||||
|
||||
Generate and run an oci model with a quantized GGUF converted from Safetensors.
|
||||
```bash
|
||||
$ ramalama --image quay.io/ramalama/ramalama-rag convert --gguf Q4_K_M hf://ibm-granite/granite-3.2-2b-instruct oci://quay.io/kugupta/granite-3.2-q4-k-m:latest
|
||||
Converting /Users/kugupta/.local/share/ramalama/models/huggingface/ibm-granite/granite-3.2-2b-instruct to quay.io/kugupta/granite-3.2-q4-k-m:latest...
|
||||
Building quay.io/kugupta/granite-3.2-q4-k-m:latest...
|
||||
$ ramalama run oci://quay.io/kugupta/granite-3.2-q4-k-m:latest
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama), [ramalama-push(1)](../../commands/ramalama/push)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Eric Curtin <ecurtin@redhat.com>*
|
||||
359
docsite/docs/commands/ramalama/info.mdx
Normal file
359
docsite/docs/commands/ramalama/info.mdx
Normal file
@@ -0,0 +1,359 @@
|
||||
---
|
||||
title: ramalama info.1
|
||||
description: display RamaLama configuration information
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-info.1.md
|
||||
---
|
||||
|
||||
# ramalama info.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama info** [*options*]
|
||||
|
||||
## Description
|
||||
Display configuration information in a json format.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
## FIELDS
|
||||
|
||||
The `Engine` field indicates the OCI container engine used to launch the container in which to run the AI Model
|
||||
|
||||
The `Image` field indicates the default container image in which to run the AI Model
|
||||
|
||||
The `Runtime` field indicates which backend engine is used to execute the AI model:
|
||||
|
||||
- `llama.cpp`: Uses the llama.cpp library for model execution
|
||||
- `vllm`: Uses the vLLM library for model execution
|
||||
|
||||
The `Store` field indicates the directory path where RamaLama stores its persistent data, including downloaded models, configuration files, and cached data. By default, this is located in the user's local share directory.
|
||||
|
||||
The `UseContainer` field indicates whether RamaLama will use containers or run the AI Models natively.
|
||||
|
||||
The `Version` field shows the RamaLama version.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
Info with no container engine
|
||||
```bash
|
||||
$ ramalama info
|
||||
{
|
||||
"Accelerator": "cuda",
|
||||
"Engine": {
|
||||
"Name": ""
|
||||
},
|
||||
"Image": "quay.io/ramalama/cuda:0.7",
|
||||
"Runtime": "llama.cpp",
|
||||
"Shortnames": {
|
||||
"Names": {
|
||||
"cerebrum": "huggingface://froggeric/Cerebrum-1.0-7b-GGUF/Cerebrum-1.0-7b-Q4_KS.gguf",
|
||||
"deepseek": "ollama://deepseek-r1",
|
||||
"dragon": "huggingface://llmware/dragon-mistral-7b-v0/dragon-mistral-7b-q4_k_m.gguf",
|
||||
"gemma3": "hf://bartowski/google_gemma-3-4b-it-GGUF/google_gemma-3-4b-it-IQ2_M.gguf",
|
||||
"gemma3:12b": "hf://bartowski/google_gemma-3-12b-it-GGUF/google_gemma-3-12b-it-IQ2_M.gguf",
|
||||
"gemma3:1b": "hf://bartowski/google_gemma-3-1b-it-GGUF/google_gemma-3-1b-it-IQ2_M.gguf",
|
||||
"gemma3:27b": "hf://bartowski/google_gemma-3-27b-it-GGUF/google_gemma-3-27b-it-IQ2_M.gguf",
|
||||
"gemma3:4b": "hf://bartowski/google_gemma-3-4b-it-GGUF/google_gemma-3-4b-it-IQ2_M.gguf",
|
||||
"granite": "ollama://granite3.1-dense",
|
||||
"granite-code": "hf://ibm-granite/granite-3b-code-base-2k-GGUF/granite-3b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:20b": "hf://ibm-granite/granite-20b-code-base-8k-GGUF/granite-20b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:34b": "hf://ibm-granite/granite-34b-code-base-8k-GGUF/granite-34b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:3b": "hf://ibm-granite/granite-3b-code-base-2k-GGUF/granite-3b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:8b": "hf://ibm-granite/granite-8b-code-base-4k-GGUF/granite-8b-code-base.Q4_K_M.gguf",
|
||||
"granite-lab-7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite-lab-8b": "huggingface://ibm-granite/granite-8b-code-base-GGUF/granite-8b-code-base.Q4_K_M.gguf",
|
||||
"granite-lab:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite:2b": "ollama://granite3.1-dense:2b",
|
||||
"granite:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite:8b": "ollama://granite3.1-dense:8b",
|
||||
"hermes": "huggingface://NousResearch/Hermes-2-Pro-Mistral-7B-GGUF/Hermes-2-Pro-Mistral-7B.Q4_K_M.gguf",
|
||||
"ibm/granite": "ollama://granite3.1-dense:8b",
|
||||
"ibm/granite:2b": "ollama://granite3.1-dense:2b",
|
||||
"ibm/granite:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"ibm/granite:8b": "ollama://granite3.1-dense:8b",
|
||||
"merlinite": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite-lab-7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite-lab:7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite:7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"mistral": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b-v1": "huggingface://TheBloke/Mistral-7B-Instruct-v0.1-GGUF/mistral-7b-instruct-v0.1.Q5_K_M.gguf",
|
||||
"mistral:7b-v2": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b-v3": "huggingface://MaziyarPanahi/Mistral-7B-Instruct-v0.3-GGUF/Mistral-7B-Instruct-v0.3.Q4_K_M.gguf",
|
||||
"mistral_code_16k": "huggingface://TheBloke/Mistral-7B-Code-16K-qlora-GGUF/mistral-7b-code-16k-qlora.Q4_K_M.gguf",
|
||||
"mistral_codealpaca": "huggingface://TheBloke/Mistral-7B-codealpaca-lora-GGUF/mistral-7b-codealpaca-lora.Q4_K_M.gguf",
|
||||
"mixtao": "huggingface://MaziyarPanahi/MixTAO-7Bx2-MoE-Instruct-v7.0-GGUF/MixTAO-7Bx2-MoE-Instruct-v7.0.Q4_K_M.gguf",
|
||||
"openchat": "huggingface://TheBloke/openchat-3.5-0106-GGUF/openchat-3.5-0106.Q4_K_M.gguf",
|
||||
"openorca": "huggingface://TheBloke/Mistral-7B-OpenOrca-GGUF/mistral-7b-openorca.Q4_K_M.gguf",
|
||||
"phi2": "huggingface://MaziyarPanahi/phi-2-GGUF/phi-2.Q4_K_M.gguf",
|
||||
"smollm:135m": "ollama://smollm:135m",
|
||||
"tiny": "ollama://tinyllama"
|
||||
},
|
||||
"Files": [
|
||||
"/usr/share/ramalama/shortnames.conf",
|
||||
"/home/dwalsh/.config/ramalama/shortnames.conf",
|
||||
]
|
||||
},
|
||||
"Store": "/home/dwalsh/.local/share/ramalama",
|
||||
"UseContainer": true,
|
||||
"Version": "0.7.5"
|
||||
}
|
||||
```
|
||||
|
||||
Info with Podman engine
|
||||
```bash
|
||||
$ ramalama info
|
||||
{
|
||||
"Accelerator": "cuda",
|
||||
"Engine": {
|
||||
"Info": {
|
||||
"host": {
|
||||
"arch": "amd64",
|
||||
"buildahVersion": "1.39.4",
|
||||
"cgroupControllers": [
|
||||
"cpu",
|
||||
"io",
|
||||
"memory",
|
||||
"pids"
|
||||
],
|
||||
"cgroupManager": "systemd",
|
||||
"cgroupVersion": "v2",
|
||||
"conmon": {
|
||||
"package": "conmon-2.1.13-1.fc42.x86_64",
|
||||
"path": "/usr/bin/conmon",
|
||||
"version": "conmon version 2.1.13, commit: "
|
||||
},
|
||||
"cpuUtilization": {
|
||||
"idlePercent": 97.36,
|
||||
"systemPercent": 0.64,
|
||||
"userPercent": 2
|
||||
},
|
||||
"cpus": 32,
|
||||
"databaseBackend": "sqlite",
|
||||
"distribution": {
|
||||
"distribution": "fedora",
|
||||
"variant": "workstation",
|
||||
"version": "42"
|
||||
},
|
||||
"eventLogger": "journald",
|
||||
"freeLocks": 2043,
|
||||
"hostname": "danslaptop",
|
||||
"idMappings": {
|
||||
"gidmap": [
|
||||
{
|
||||
"container_id": 0,
|
||||
"host_id": 3267,
|
||||
"size": 1
|
||||
},
|
||||
{
|
||||
"container_id": 1,
|
||||
"host_id": 524288,
|
||||
"size": 65536
|
||||
}
|
||||
],
|
||||
"uidmap": [
|
||||
{
|
||||
"container_id": 0,
|
||||
"host_id": 3267,
|
||||
"size": 1
|
||||
},
|
||||
{
|
||||
"container_id": 1,
|
||||
"host_id": 524288,
|
||||
"size": 65536
|
||||
}
|
||||
]
|
||||
},
|
||||
"kernel": "6.14.2-300.fc42.x86_64",
|
||||
"linkmode": "dynamic",
|
||||
"logDriver": "journald",
|
||||
"memFree": 65281908736,
|
||||
"memTotal": 134690979840,
|
||||
"networkBackend": "netavark",
|
||||
"networkBackendInfo": {
|
||||
"backend": "netavark",
|
||||
"dns": {
|
||||
"package": "aardvark-dns-1.14.0-1.fc42.x86_64",
|
||||
"path": "/usr/libexec/podman/aardvark-dns",
|
||||
"version": "aardvark-dns 1.14.0"
|
||||
},
|
||||
"package": "netavark-1.14.1-1.fc42.x86_64",
|
||||
"path": "/usr/libexec/podman/netavark",
|
||||
"version": "netavark 1.14.1"
|
||||
},
|
||||
"ociRuntime": {
|
||||
"name": "crun",
|
||||
"package": "crun-1.21-1.fc42.x86_64",
|
||||
"path": "/usr/bin/crun",
|
||||
"version": "crun version 1.21\ncommit: 10269840aa07fb7e6b7e1acff6198692d8ff5c88\nrundir: /run/user/3267/crun\nspec: 1.0.0\n+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +LIBKRUN +WASM:wasmedge +YAJL"
|
||||
},
|
||||
"os": "linux",
|
||||
"pasta": {
|
||||
"executable": "/bin/pasta",
|
||||
"package": "passt-0^20250415.g2340bbf-1.fc42.x86_64",
|
||||
"version": ""
|
||||
},
|
||||
"remoteSocket": {
|
||||
"exists": true,
|
||||
"path": "/run/user/3267/podman/podman.sock"
|
||||
},
|
||||
"rootlessNetworkCmd": "pasta",
|
||||
"security": {
|
||||
"apparmorEnabled": false,
|
||||
"capabilities": "CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT",
|
||||
"rootless": true,
|
||||
"seccompEnabled": true,
|
||||
"seccompProfilePath": "/usr/share/containers/seccomp.json",
|
||||
"selinuxEnabled": true
|
||||
},
|
||||
"serviceIsRemote": false,
|
||||
"slirp4netns": {
|
||||
"executable": "/bin/slirp4netns",
|
||||
"package": "slirp4netns-1.3.1-2.fc42.x86_64",
|
||||
"version": "slirp4netns version 1.3.1\ncommit: e5e368c4f5db6ae75c2fce786e31eef9da6bf236\nlibslirp: 4.8.0\nSLIRP_CONFIG_VERSION_MAX: 5\nlibseccomp: 2.5.5"
|
||||
},
|
||||
"swapFree": 8589930496,
|
||||
"swapTotal": 8589930496,
|
||||
"uptime": "116h 35m 40.00s (Approximately 4.83 days)",
|
||||
"variant": ""
|
||||
},
|
||||
"plugins": {
|
||||
"authorization": null,
|
||||
"log": [
|
||||
"k8s-file",
|
||||
"none",
|
||||
"passthrough",
|
||||
"journald"
|
||||
],
|
||||
"network": [
|
||||
"bridge",
|
||||
"macvlan",
|
||||
"ipvlan"
|
||||
],
|
||||
"volume": [
|
||||
"local"
|
||||
]
|
||||
},
|
||||
"registries": {
|
||||
"search": [
|
||||
"registry.fedoraproject.org",
|
||||
"registry.access.redhat.com",
|
||||
"docker.io"
|
||||
]
|
||||
},
|
||||
"store": {
|
||||
"configFile": "/home/dwalsh/.config/containers/storage.conf",
|
||||
"containerStore": {
|
||||
"number": 5,
|
||||
"paused": 0,
|
||||
"running": 0,
|
||||
"stopped": 5
|
||||
},
|
||||
"graphDriverName": "overlay",
|
||||
"graphOptions": {},
|
||||
"graphRoot": "/home/dwalsh/.local/share/containers/storage",
|
||||
"graphRootAllocated": 2046687182848,
|
||||
"graphRootUsed": 399990419456,
|
||||
"graphStatus": {
|
||||
"Backing Filesystem": "btrfs",
|
||||
"Native Overlay Diff": "true",
|
||||
"Supports d_type": "true",
|
||||
"Supports shifting": "false",
|
||||
"Supports volatile": "true",
|
||||
"Using metacopy": "false"
|
||||
},
|
||||
"imageCopyTmpDir": "/var/tmp",
|
||||
"imageStore": {
|
||||
"number": 297
|
||||
},
|
||||
"runRoot": "/run/user/3267/containers",
|
||||
"transientStore": false,
|
||||
"volumePath": "/home/dwalsh/.local/share/containers/storage/volumes"
|
||||
},
|
||||
"version": {
|
||||
"APIVersion": "5.4.2",
|
||||
"BuildOrigin": "Fedora Project",
|
||||
"Built": 1743552000,
|
||||
"BuiltTime": "Tue Apr 1 19:00:00 2025",
|
||||
"GitCommit": "be85287fcf4590961614ee37be65eeb315e5d9ff",
|
||||
"GoVersion": "go1.24.1",
|
||||
"Os": "linux",
|
||||
"OsArch": "linux/amd64",
|
||||
"Version": "5.4.2"
|
||||
}
|
||||
},
|
||||
"Name": "podman"
|
||||
},
|
||||
"Image": "quay.io/ramalama/cuda:0.7",
|
||||
"Runtime": "llama.cpp",
|
||||
"Shortnames": {
|
||||
"Names": {
|
||||
"cerebrum": "huggingface://froggeric/Cerebrum-1.0-7b-GGUF/Cerebrum-1.0-7b-Q4_KS.gguf",
|
||||
"deepseek": "ollama://deepseek-r1",
|
||||
"dragon": "huggingface://llmware/dragon-mistral-7b-v0/dragon-mistral-7b-q4_k_m.gguf",
|
||||
"gemma3": "hf://bartowski/google_gemma-3-4b-it-GGUF/google_gemma-3-4b-it-IQ2_M.gguf",
|
||||
"gemma3:12b": "hf://bartowski/google_gemma-3-12b-it-GGUF/google_gemma-3-12b-it-IQ2_M.gguf",
|
||||
"gemma3:1b": "hf://bartowski/google_gemma-3-1b-it-GGUF/google_gemma-3-1b-it-IQ2_M.gguf",
|
||||
"gemma3:27b": "hf://bartowski/google_gemma-3-27b-it-GGUF/google_gemma-3-27b-it-IQ2_M.gguf",
|
||||
"gemma3:4b": "hf://bartowski/google_gemma-3-4b-it-GGUF/google_gemma-3-4b-it-IQ2_M.gguf",
|
||||
"granite": "ollama://granite3.1-dense",
|
||||
"granite-code": "hf://ibm-granite/granite-3b-code-base-2k-GGUF/granite-3b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:20b": "hf://ibm-granite/granite-20b-code-base-8k-GGUF/granite-20b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:34b": "hf://ibm-granite/granite-34b-code-base-8k-GGUF/granite-34b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:3b": "hf://ibm-granite/granite-3b-code-base-2k-GGUF/granite-3b-code-base.Q4_K_M.gguf",
|
||||
"granite-code:8b": "hf://ibm-granite/granite-8b-code-base-4k-GGUF/granite-8b-code-base.Q4_K_M.gguf",
|
||||
"granite-lab-7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite-lab-8b": "huggingface://ibm-granite/granite-8b-code-base-GGUF/granite-8b-code-base.Q4_K_M.gguf",
|
||||
"granite-lab:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite:2b": "ollama://granite3.1-dense:2b",
|
||||
"granite:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"granite:8b": "ollama://granite3.1-dense:8b",
|
||||
"hermes": "huggingface://NousResearch/Hermes-2-Pro-Mistral-7B-GGUF/Hermes-2-Pro-Mistral-7B.Q4_K_M.gguf",
|
||||
"ibm/granite": "ollama://granite3.1-dense:8b",
|
||||
"ibm/granite:2b": "ollama://granite3.1-dense:2b",
|
||||
"ibm/granite:7b": "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf",
|
||||
"ibm/granite:8b": "ollama://granite3.1-dense:8b",
|
||||
"merlinite": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite-lab-7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite-lab:7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"merlinite:7b": "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf",
|
||||
"mistral": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b-v1": "huggingface://TheBloke/Mistral-7B-Instruct-v0.1-GGUF/mistral-7b-instruct-v0.1.Q5_K_M.gguf",
|
||||
"mistral:7b-v2": "huggingface://TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf",
|
||||
"mistral:7b-v3": "huggingface://MaziyarPanahi/Mistral-7B-Instruct-v0.3-GGUF/Mistral-7B-Instruct-v0.3.Q4_K_M.gguf",
|
||||
"mistral_code_16k": "huggingface://TheBloke/Mistral-7B-Code-16K-qlora-GGUF/mistral-7b-code-16k-qlora.Q4_K_M.gguf",
|
||||
"mistral_codealpaca": "huggingface://TheBloke/Mistral-7B-codealpaca-lora-GGUF/mistral-7b-codealpaca-lora.Q4_K_M.gguf",
|
||||
"mixtao": "huggingface://MaziyarPanahi/MixTAO-7Bx2-MoE-Instruct-v7.0-GGUF/MixTAO-7Bx2-MoE-Instruct-v7.0.Q4_K_M.gguf",
|
||||
"openchat": "huggingface://TheBloke/openchat-3.5-0106-GGUF/openchat-3.5-0106.Q4_K_M.gguf",
|
||||
"openorca": "huggingface://TheBloke/Mistral-7B-OpenOrca-GGUF/mistral-7b-openorca.Q4_K_M.gguf",
|
||||
"phi2": "huggingface://MaziyarPanahi/phi-2-GGUF/phi-2.Q4_K_M.gguf",
|
||||
"smollm:135m": "ollama://smollm:135m",
|
||||
"tiny": "ollama://tinyllama"
|
||||
},
|
||||
"Files": [
|
||||
"/usr/share/ramalama/shortnames.conf",
|
||||
"/home/dwalsh/.config/ramalama/shortnames.conf",
|
||||
]
|
||||
},
|
||||
"Store": "/home/dwalsh/.local/share/ramalama",
|
||||
"UseContainer": true,
|
||||
"Version": "0.7.5"
|
||||
}
|
||||
```
|
||||
|
||||
Using jq to print specific `ramalama info` content.
|
||||
```bash
|
||||
$ ramalama info | jq .Shortnames.Names.mixtao
|
||||
"huggingface://MaziyarPanahi/MixTAO-7Bx2-MoE-Instruct-v7.0-GGUF/MixTAO-7Bx2-MoE-Instruct-v7.0.Q4_K_M.gguf"
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Oct 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
82
docsite/docs/commands/ramalama/inspect.mdx
Normal file
82
docsite/docs/commands/ramalama/inspect.mdx
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: ramalama inspect.1
|
||||
description: inspect the specified AI Model
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-inspect.1.md
|
||||
---
|
||||
|
||||
# ramalama inspect.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama inspect** [*options*] *model*
|
||||
|
||||
## Description
|
||||
Inspect the specified AI Model about additional information
|
||||
like the repository, its metadata and tensor information.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--all**
|
||||
Print all available information about the AI Model.
|
||||
By default, only a basic subset is printed.
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--json**
|
||||
Print the AI Model information in json format.
|
||||
|
||||
## Examples
|
||||
|
||||
Inspect the smollm:135m model for basic information
|
||||
```bash
|
||||
$ ramalama inspect smollm:135m
|
||||
smollm:135m
|
||||
Path: /var/lib/ramalama/models/ollama/smollm:135m
|
||||
Registry: ollama
|
||||
Format: GGUF
|
||||
Version: 3
|
||||
Endianness: little
|
||||
Metadata: 39 entries
|
||||
Tensors: 272 entries
|
||||
```
|
||||
|
||||
Inspect the smollm:135m model for all information in json format
|
||||
```bash
|
||||
$ ramalama inspect smollm:135m --all --json
|
||||
{
|
||||
"Name": "smollm:135m",
|
||||
"Path": "/home/mengel/.local/share/ramalama/models/ollama/smollm:135m",
|
||||
"Registry": "ollama",
|
||||
"Format": "GGUF",
|
||||
"Version": 3,
|
||||
"LittleEndian": true,
|
||||
"Metadata": {
|
||||
"general.architecture": "llama",
|
||||
"general.base_model.0.name": "SmolLM 135M",
|
||||
"general.base_model.0.organization": "HuggingFaceTB",
|
||||
"general.base_model.0.repo_url": "https://huggingface.co/HuggingFaceTB/SmolLM-135M",
|
||||
...
|
||||
},
|
||||
"Tensors": [
|
||||
{
|
||||
"dimensions": [
|
||||
576,
|
||||
49152
|
||||
],
|
||||
"n_dimensions": 2,
|
||||
"name": "token_embd.weight",
|
||||
"offset": 0,
|
||||
"type": 8
|
||||
},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Feb 2025, Originally compiled by Michael Engel <mengel@redhat.com>*
|
||||
56
docsite/docs/commands/ramalama/list.mdx
Normal file
56
docsite/docs/commands/ramalama/list.mdx
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: ramalama list.1
|
||||
description: list all downloaded AI Models
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-list.1.md
|
||||
---
|
||||
|
||||
# ramalama list.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama list** [*options*]
|
||||
|
||||
**ramalama ls** [*options*]
|
||||
|
||||
## Description
|
||||
List all the AI Models in local storage
|
||||
|
||||
## Options
|
||||
|
||||
#### **--all**
|
||||
include partially downloaded Models
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--json**
|
||||
print Model list in json format
|
||||
|
||||
#### **--noheading**, **-n**
|
||||
do not print heading
|
||||
|
||||
## Examples
|
||||
|
||||
List all Models downloaded to users homedir
|
||||
```bash
|
||||
$ ramalama list
|
||||
NAME MODIFIED SIZE
|
||||
ollama://smollm:135m 16 hours ago 5.5M
|
||||
huggingface://afrideva/Tiny-Vicuna-1B-GGUF/tiny-vicuna-1b.q2_k.gguf 14 hours ago 460M
|
||||
ollama://granite-code:3b (partial) 5 days ago 1.9G
|
||||
ollama://granite-code:latest 1 day ago 1.9G
|
||||
ollama://moondream:latest 6 days ago 791M
|
||||
```
|
||||
|
||||
List all Models in json format
|
||||
```bash
|
||||
$ ramalama list --json
|
||||
{"models": [{"name": "oci://quay.io/mmortari/gguf-py-example/v1/example.gguf", "modified": 427330, "size": "4.0K"}, {"name": "huggingface://afrideva/Tiny-Vicuna-1B-GGUF/tiny-vicuna-1b.q2_k.gguf", "modified": 427333, "size": "460M"}, {"name": "ollama://smollm:135m", "modified": 420833, "size": "5.5M"}, {"name": "ollama://mistral:latest", "modified": 433998, "size": "3.9G"}, {"name": "ollama://granite-code:latest", "modified": 2180483, "size": "1.9G"}, {"name": "ollama://tinyllama:latest", "modified": 364870, "size": "609M"}, {"name": "ollama://tinyllama:1.1b", "modified": 364866, "size": "609M"}]}
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
76
docsite/docs/commands/ramalama/login.mdx
Normal file
76
docsite/docs/commands/ramalama/login.mdx
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: ramalama login.1
|
||||
description: login to remote registry
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-login.1.md
|
||||
---
|
||||
|
||||
# ramalama login.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama login** [*options*] [*registry*]
|
||||
|
||||
## Description
|
||||
login to remote model registry
|
||||
|
||||
By default, RamaLama uses the Ollama registry transport. You can override this default by configuring the `ramalama.conf` file or setting the `RAMALAMA_TRANSPORTS` environment variable. Ensure a registry transport is set before attempting to log in.
|
||||
|
||||
## Options
|
||||
Options are specific to registry types.
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--password**, **-p**=*password*
|
||||
password for registry
|
||||
|
||||
#### **--password-stdin**
|
||||
take the password from stdin
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
#### **--token**=*token*
|
||||
token to be passed to Model registry
|
||||
|
||||
#### **--username**, **-u**=*username*
|
||||
username for registry
|
||||
|
||||
## Examples
|
||||
|
||||
Login to quay.io/username oci registry
|
||||
```bash
|
||||
$ export RAMALAMA_TRANSPORT=quay.io/username
|
||||
$ ramalama login -u username
|
||||
```
|
||||
|
||||
Login to ollama registry
|
||||
```bash
|
||||
$ export RAMALAMA_TRANSPORT=ollama
|
||||
$ ramalama login
|
||||
```
|
||||
|
||||
Login to huggingface registry
|
||||
```bash
|
||||
$ export RAMALAMA_TRANSPORT=huggingface
|
||||
$ ramalama login --token=XYZ
|
||||
```
|
||||
Logging in to Hugging Face requires the `huggingface-cli` tool. For installation and usage instructions, see the documentation of the Hugging Face command line interface: [*https://huggingface.co/docs/huggingface_hub/en/guides/cli*](https://huggingface.co/docs/huggingface_hub/en/guides/cli).
|
||||
|
||||
Login to ModelScope registry
|
||||
```bash
|
||||
$ export RAMALAMA_TRANSPORT=modelscope
|
||||
$ ramalama login --token=XYZ
|
||||
```
|
||||
|
||||
Logging in to ModelScope requires the `modelscope` tool. For installation and usage instructions, see the documentation of the ModelScope command line interface: [*https://www.modelscope.cn/docs/Beginner-s-Guide/Environment-Setup*](https://www.modelscope.cn/docs/Beginner-s-Guide/Environment-Setup).
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
48
docsite/docs/commands/ramalama/logout.mdx
Normal file
48
docsite/docs/commands/ramalama/logout.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: ramalama logout.1
|
||||
description: logout from remote registry
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-logout.1.md
|
||||
---
|
||||
|
||||
# ramalama logout.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama logout** [*options*] [*registry*]
|
||||
|
||||
## Description
|
||||
Logout to remote model registry
|
||||
|
||||
## Options
|
||||
|
||||
Options are specific to registry types.
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--token**
|
||||
|
||||
Token to be passed to Model registry
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
Logout to quay.io/username oci repository
|
||||
```bash
|
||||
$ ramalama logout quay.io/username
|
||||
```
|
||||
|
||||
Logout from ollama repository
|
||||
```bash
|
||||
$ ramalama logout ollama
|
||||
```
|
||||
|
||||
Logout from huggingface
|
||||
```bash
|
||||
$ ramalama logout huggingface
|
||||
```
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
171
docsite/docs/commands/ramalama/perplexity.mdx
Normal file
171
docsite/docs/commands/ramalama/perplexity.mdx
Normal file
@@ -0,0 +1,171 @@
|
||||
---
|
||||
title: ramalama perplexity.1
|
||||
description: calculate the perplexity value of an AI Model
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-perplexity.1.md
|
||||
---
|
||||
|
||||
# ramalama perplexity.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama perplexity** [*options*] *model* [arg ...]
|
||||
|
||||
## MODEL TRANSPORTS
|
||||
|
||||
| Transports | Prefix | Web Site |
|
||||
| ------------- | ------ | --------------------------------------------------- |
|
||||
| URL based | https://, http://, file:// | `https://web.site/ai.model`, `file://tmp/ai.model`|
|
||||
| HuggingFace | huggingface://, hf://, hf.co/ | [`huggingface.co`](https://www.huggingface.co)|
|
||||
| ModelScope | modelscope://, ms:// | [`modelscope.cn`](https://modelscope.cn/)|
|
||||
| Ollama | ollama:// | [`ollama.com`](https://www.ollama.com)|
|
||||
| OCI Container Registries | oci:// | [`opencontainers.org`](https://opencontainers.org)|
|
||||
|||Examples: [`quay.io`](https://quay.io), [`Docker Hub`](https://docker.io),[`Artifactory`](https://artifactory.com)|
|
||||
|
||||
RamaLama defaults to the Ollama registry transport. This default can be overridden in the `ramalama.conf` file or via the RAMALAMA_TRANSPORTS
|
||||
environment. `export RAMALAMA_TRANSPORT=huggingface` Changes RamaLama to use huggingface transport.
|
||||
|
||||
Modify individual model transports by specifying the `huggingface://`, `oci://`, `ollama://`, `https://`, `http://`, `file://` prefix to the model.
|
||||
|
||||
URL support means if a model is on a web site or even on your local system, you can run it directly.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--ctx-size**, **-c**
|
||||
size of the prompt context. This option is also available as **--max-model-len**. Applies to llama.cpp and vllm regardless of alias (default: 2048, 0 = loaded from model)
|
||||
|
||||
#### **--device**
|
||||
Add a host device to the container. Optional permissions parameter can
|
||||
be used to specify device permissions by combining r for read, w for
|
||||
write, and m for mknod(2).
|
||||
|
||||
Example: --device=/dev/dri/renderD128:/dev/xvdc:rwm
|
||||
|
||||
The device specification is passed directly to the underlying container engine. See documentation of the supported container engine for more information.
|
||||
|
||||
#### **--env**=
|
||||
|
||||
Set environment variables inside of the container.
|
||||
|
||||
This option allows arbitrary environment variables that are available for the
|
||||
process to be launched inside of the container. If an environment variable is
|
||||
specified without a value, the container engine checks the host environment
|
||||
for a value and set the variable only if it is set on the host.
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--image**=IMAGE
|
||||
OCI container image to run with specified AI model. RamaLama defaults to using
|
||||
images based on the accelerator it discovers. For example:
|
||||
`quay.io/ramalama/ramalama`. See the table below for all default images.
|
||||
The default image tag is based on the minor version of the RamaLama package.
|
||||
Version 0.11.1 of RamaLama pulls an image with a `:0.11` tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
|
||||
|
||||
The default can be overridden in the ramalama.conf file or via the
|
||||
RAMALAMA_IMAGE environment variable. `export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2` tells
|
||||
RamaLama to use the `quay.io/ramalama/aiimage:1.2` image.
|
||||
|
||||
Accelerated images:
|
||||
|
||||
| Accelerator | Image |
|
||||
| ------------------------| -------------------------- |
|
||||
| CPU, Apple | quay.io/ramalama/ramalama |
|
||||
| HIP_VISIBLE_DEVICES | quay.io/ramalama/rocm |
|
||||
| CUDA_VISIBLE_DEVICES | quay.io/ramalama/cuda |
|
||||
| ASAHI_VISIBLE_DEVICES | quay.io/ramalama/asahi |
|
||||
| INTEL_VISIBLE_DEVICES | quay.io/ramalama/intel-gpu |
|
||||
| ASCEND_VISIBLE_DEVICES | quay.io/ramalama/cann |
|
||||
| MUSA_VISIBLE_DEVICES | quay.io/ramalama/musa |
|
||||
|
||||
#### **--keep-groups**
|
||||
pass --group-add keep-groups to podman (default: False)
|
||||
If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
|
||||
|
||||
#### **--name**, **-n**
|
||||
name of the container to run the Model in
|
||||
|
||||
#### **--network**=*none*
|
||||
set the network mode for the container
|
||||
|
||||
#### **--ngl**
|
||||
number of gpu layers, 0 means CPU inferencing, 999 means use max layers (default: -1)
|
||||
The default -1, means use whatever is automatically deemed appropriate (0 or 999)
|
||||
|
||||
#### **--oci-runtime**
|
||||
|
||||
Override the default OCI runtime used to launch the container. Container
|
||||
engines like Podman and Docker, have their own default oci runtime that they
|
||||
use. Using this option RamaLama will override these defaults.
|
||||
|
||||
On Nvidia based GPU systems, RamaLama defaults to using the
|
||||
`nvidia-container-runtime`. Use this option to override this selection.
|
||||
|
||||
#### **--privileged**
|
||||
By default, RamaLama containers are unprivileged (=false) and cannot, for
|
||||
example, modify parts of the operating system. This is because by de‐
|
||||
fault a container is only allowed limited access to devices. A "privi‐
|
||||
leged" container is given the same access to devices as the user launch‐
|
||||
ing the container, with the exception of virtual consoles (/dev/tty\d+)
|
||||
when running in systemd mode (--systemd=always).
|
||||
|
||||
A privileged container turns off the security features that isolate the
|
||||
container from the host. Dropped Capabilities, limited devices, read-
|
||||
only mount points, Apparmor/SELinux separation, and Seccomp filters are
|
||||
all disabled. Due to the disabled security features, the privileged
|
||||
field should almost never be set as containers can easily break out of
|
||||
confinement.
|
||||
|
||||
Containers running in a user namespace (e.g., rootless containers) can‐
|
||||
not have more privileges than the user that launched them.
|
||||
|
||||
#### **--pull**=*policy*
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
#### **--runtime-args**="*args*"
|
||||
Add *args* to the runtime (llama.cpp or vllm) invocation.
|
||||
|
||||
#### **--seed**=
|
||||
Specify seed rather than using random seed model interaction
|
||||
|
||||
#### **--selinux**=*true*
|
||||
Enable SELinux container separation
|
||||
|
||||
#### **--temp**="0.8"
|
||||
Temperature of the response from the AI Model
|
||||
llama.cpp explains this as:
|
||||
|
||||
The lower the number is, the more deterministic the response.
|
||||
|
||||
The higher the number is the more creative the response is, but more likely to hallucinate when set too high.
|
||||
|
||||
Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories
|
||||
|
||||
#### **--threads**, **-t**
|
||||
Maximum number of cpu threads to use.
|
||||
The default is to use half the cores available on this system for the number of threads.
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
## Description
|
||||
Calculate the perplexity of an AI Model. Perplexity measures how well the model can predict the next token with lower values being better.
|
||||
|
||||
## Examples
|
||||
|
||||
```text
|
||||
ramalama perplexity granite3-moe
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Jan 2025, Originally compiled by Eric Curtin <ecurtin@redhat.com>*
|
||||
32
docsite/docs/commands/ramalama/pull.mdx
Normal file
32
docsite/docs/commands/ramalama/pull.mdx
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
title: ramalama pull.1
|
||||
description: pull AI Models from Model registries to local storage
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-pull.1.md
|
||||
---
|
||||
|
||||
# ramalama pull.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama pull** [*options*] *model*
|
||||
|
||||
## Description
|
||||
Pull specified AI Model into local storage
|
||||
|
||||
## Options
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
81
docsite/docs/commands/ramalama/push.mdx
Normal file
81
docsite/docs/commands/ramalama/push.mdx
Normal file
@@ -0,0 +1,81 @@
|
||||
---
|
||||
title: ramalama push.1
|
||||
description: push AI Models from local storage to remote registries
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-push.1.md
|
||||
---
|
||||
|
||||
# ramalama push.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama push** [*options*] *model* [*target*]
|
||||
|
||||
## Description
|
||||
Push specified AI Model (OCI-only at present)
|
||||
|
||||
The model can be from RamaLama model storage in Huggingface, Ollama, or OCI Model format.
|
||||
The model can also just be a model stored on disk.
|
||||
|
||||
Users can convert without pushing using the `ramalama convert` command.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--network**=*none*
|
||||
sets the configuration for network namespaces when handling RUN instructions
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
#### **--type**=*raw* | *car*
|
||||
|
||||
type of OCI Model Image to push.
|
||||
|
||||
| Type | Description |
|
||||
| ---- | ------------------------------------------------------------- |
|
||||
| car | Includes base image with the model stored in a /models subdir |
|
||||
| raw | Only the model and a link file model.file to it stored at / |
|
||||
|
||||
Only supported for pushing OCI Model Images.
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
Push and OCI model to registry
|
||||
```bash
|
||||
$ ramalama push oci://quay.io/rhatdan/tiny:latest
|
||||
Pushing quay.io/rhatdan/tiny:latest...
|
||||
Getting image source signatures
|
||||
Copying blob e0166756db86 skipped: already exists
|
||||
Copying config ebe856e203 done |
|
||||
Writing manifest to image destination
|
||||
```
|
||||
|
||||
Generate an oci model out of an Ollama model and push to registry
|
||||
```bash
|
||||
$ ramalama push ollama://tinyllama:latest oci://quay.io/rhatdan/tiny:latest
|
||||
Building quay.io/rhatdan/tiny:latest...
|
||||
STEP 1/2: FROM scratch
|
||||
STEP 2/2: COPY sha256:2af3b81862c6be03c769683af18efdadb2c33f60ff32ab6f83e42c043d6c7816 /model
|
||||
--> Using cache 69db4a10191c976d2c3c24da972a2a909adec45135a69dbb9daeaaf2a3a36344
|
||||
COMMIT quay.io/rhatdan/tiny:latest
|
||||
--> 69db4a10191c
|
||||
Successfully tagged quay.io/rhatdan/tiny:latest
|
||||
69db4a10191c976d2c3c24da972a2a909adec45135a69dbb9daeaaf2a3a36344
|
||||
Pushing quay.io/rhatdan/tiny:latest...
|
||||
Getting image source signatures
|
||||
Copying blob e0166756db86 skipped: already exists
|
||||
Copying config 69db4a1019 done |
|
||||
Writing manifest to image destination
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama), [ramalama-convert(1)](../../commands/ramalama/convert)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Eric Curtin <ecurtin@redhat.com>*
|
||||
127
docsite/docs/commands/ramalama/rag.mdx
Normal file
127
docsite/docs/commands/ramalama/rag.mdx
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: ramalama rag.1
|
||||
description: generate and convert Retrieval Augmented Generation (RAG) data from provided documents into an OCI Image
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-rag.1.md
|
||||
---
|
||||
|
||||
# ramalama rag.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama rag** [options] [path ...] image
|
||||
|
||||
## Description
|
||||
Generate RAG data from provided documents and convert into an OCI Image. This command uses a specific container image containing the docling
|
||||
tool to convert the specified content into a RAG vector database. If the image does not exists locally RamaLama will pull the image
|
||||
down and launch a container to process the data.
|
||||
|
||||
:::note
|
||||
this command does not work without a container engine.
|
||||
:::
|
||||
|
||||
positional arguments:
|
||||
|
||||
*PATH* Files/Directory containing PDF, DOCX, PPTX, XLSX, HTML,
|
||||
AsciiDoc & Markdown formatted files to be processed.
|
||||
Can be specified multiple times.
|
||||
|
||||
*DESTINATION* Path or OCI Image name to contain processed rag data
|
||||
|
||||
## Options
|
||||
|
||||
#### **--env**=
|
||||
|
||||
Set environment variables inside of the container.
|
||||
|
||||
This option allows arbitrary environment variables that are available for the
|
||||
process to be launched inside of the container. If an environment variable is
|
||||
specified without a value, the container engine checks the host environment
|
||||
for a value and set the variable only if it is set on the host.
|
||||
|
||||
#### **--format**=*json* | *markdown* | *qdrant* |
|
||||
Convert documents into the following formats
|
||||
|
||||
| Type | Description |
|
||||
| ------- | ---------------------------------------------------- |
|
||||
| json | JavaScript Object Notation. lightweight format for exchanging data |
|
||||
| markdown| Lightweight markup language using plain text editing |
|
||||
| qdrant | Retrieval-Augmented Generation (RAG) Vector database Qdrant distribution |
|
||||
| milvus | Retrieval-Augmented Generation (RAG) Vector database Milvus distribution |
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--image**=IMAGE
|
||||
OCI container image to run with specified AI model. RamaLama defaults to using
|
||||
images based on the accelerator it discovers. For example:
|
||||
`quay.io/ramalama/ramalama-rag`. See the table below for all default images.
|
||||
The default image tag is based on the minor version of the RamaLama package.
|
||||
Version 0.11.1 of RamaLama pulls an image with a `:0.11` tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
|
||||
|
||||
The default can be overridden in the ramalama.conf file or via the
|
||||
RAMALAMA_IMAGE environment variable. `export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2` tells
|
||||
RamaLama to use the `quay.io/ramalama/aiimage:1.2` image.
|
||||
|
||||
Accelerated images:
|
||||
|
||||
| Accelerator | Image |
|
||||
| ------------------------| ------------------------------ |
|
||||
| CPU, Apple | quay.io/ramalama/ramalama-rag |
|
||||
| HIP_VISIBLE_DEVICES | quay.io/ramalama/rocm-rag |
|
||||
| CUDA_VISIBLE_DEVICES | quay.io/ramalama/cuda-rag |
|
||||
| ASAHI_VISIBLE_DEVICES | quay.io/ramalama/asahi-rag |
|
||||
| INTEL_VISIBLE_DEVICES | quay.io/ramalama/intel-gpu-rag |
|
||||
| ASCEND_VISIBLE_DEVICES | quay.io/ramalama/cann-rag |
|
||||
| MUSA_VISIBLE_DEVICES | quay.io/ramalama/musa-rag |
|
||||
|
||||
#### **--keep-groups**
|
||||
pass --group-add keep-groups to podman (default: False)
|
||||
If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
|
||||
|
||||
#### **--network**=*none*
|
||||
sets the configuration for network namespaces when handling RUN instructions
|
||||
|
||||
#### **--ocr**
|
||||
Sets the Docling OCR flag. OCR stands for Optical Character Recognition and is used to extract text from images within PDFs converting it into raw text that an LLM can understand. This feature is useful if the PDF's one is converting has a lot of embedded images with text. This process uses a great amount of RAM so the default is false.
|
||||
|
||||
#### **--pull**=*policy*
|
||||
Pull image policy. The default is **missing**.
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
#### **--selinux**=*true*
|
||||
Enable SELinux container separation
|
||||
|
||||
## Examples
|
||||
|
||||
```bash
|
||||
$ ramalama rag ./README.md https://github.com/containers/podman/blob/main/README.md quay.io/rhatdan/myrag
|
||||
100% |███████████████████████████████████████████████████████| 114.00 KB/ 0.00 B 922.89 KB/s 59m 59s
|
||||
Building quay.io/ramalama/myrag...
|
||||
adding vectordb...
|
||||
c857ebc65c641084b34e39b740fdb6a2d9d2d97be320e6aa9439ed0ab8780fe0
|
||||
```
|
||||
|
||||
```bash
|
||||
$ ramalama rag --ocr README.md https://mysight.edu/document quay.io/rhatdan/myrag
|
||||
```
|
||||
|
||||
```bash
|
||||
$ ramalama rag --format markdown /tmp/internet.pdf /tmp/output
|
||||
$ ls /tmp/output/docs/tmp/
|
||||
/tmp/output/docs/tmp/internet.md
|
||||
$ ramalama rag --format json /tmp/internet.pdf /tmp/output
|
||||
$ ls /tmp/output/docs/tmp/
|
||||
/tmp/output/docs/tmp/internet.md
|
||||
/tmp/output/docs/tmp/internet.json
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Dec 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
197
docsite/docs/commands/ramalama/ramalama.mdx
Normal file
197
docsite/docs/commands/ramalama/ramalama.mdx
Normal file
@@ -0,0 +1,197 @@
|
||||
---
|
||||
title: ramalama.1
|
||||
description: Simple management tool for working with AI Models
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama.1.md
|
||||
---
|
||||
|
||||
# ramalama.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama** [*options*] *command*
|
||||
|
||||
## Description
|
||||
RamaLama : The goal of RamaLama is to make AI boring.
|
||||
|
||||
RamaLama tool facilitates local management and serving of AI Models.
|
||||
|
||||
On first run RamaLama inspects your system for GPU support, falling back to CPU support if no GPUs are present.
|
||||
|
||||
RamaLama uses container engines like Podman or Docker to pull the appropriate OCI image with all of the software necessary to run an AI Model for your systems setup.
|
||||
|
||||
Running in containers eliminates the need for users to configure the host
|
||||
system for AI. After the initialization, RamaLama runs the AI Models within a
|
||||
container based on the OCI image. RamaLama pulls container image specific to
|
||||
the GPUs discovered on the host system. These images are tied to the minor
|
||||
version of RamaLama. For example RamaLama version 1.2.3 on an NVIDIA system
|
||||
pulls quay.io/ramalama/cuda:1.2. To override the default image use the
|
||||
`--image` option.
|
||||
|
||||
RamaLama pulls AI Models from model registries. Starting a chatbot or a rest API service from a simple single command. Models are treated similarly to how Podman and Docker treat container images.
|
||||
|
||||
When both Podman and Docker are installed, RamaLama defaults to Podman, The `RAMALAMA_CONTAINER_ENGINE=docker` environment variable can override this behaviour. When neither are installed RamaLama attempts to run the model with software on the local system.
|
||||
|
||||
:::note
|
||||
On MacOS systems that use Podman for containers, configure the Podman machine to use the `libkrun` machine provider. The `libkrun` provider enables containers within the Podman Machine access to the Mac's GPU. See [ramalama-macos(7)](../../platform-guides/macos) for further information.
|
||||
:::
|
||||
|
||||
:::note
|
||||
On systems with NVIDIA GPUs, see [ramalama-cuda(7)](../../platform-guides/cuda) to correctly configure the host system. Default settings for flags are defined in [ramalama.conf(5)](../../configuration/conf).
|
||||
:::
|
||||
|
||||
## SECURITY
|
||||
|
||||
### Test and run your models more securely
|
||||
|
||||
Because RamaLama defaults to running AI models inside of rootless containers using Podman on Docker. These containers isolate the AI models from information on the underlying host. With RamaLama containers, the AI model is mounted as a volume into the container in read/only mode. This results in the process running the model, llama.cpp or vLLM, being isolated from the host. In addition, since `ramalama run` uses the --network=none option, the container can not reach the network and leak any information out of the system. Finally, containers are run with --rm options which means that any content written during the running of the container is wiped out when the application exits.
|
||||
|
||||
### Here’s how RamaLama delivers a robust security footprint:
|
||||
|
||||
✅ Container Isolation – AI models run within isolated containers, preventing direct access to the host system.
|
||||
✅ Read-Only Volume Mounts – The AI model is mounted in read-only mode, meaning that processes inside the container cannot modify host files.
|
||||
✅ No Network Access – ramalama run is executed with --network=none, meaning the model has no outbound connectivity for which information can be leaked.
|
||||
✅ Auto-Cleanup – Containers run with --rm, wiping out any temporary data once the session ends.
|
||||
✅ Drop All Linux Capabilities – No access to Linux capabilities to attack the underlying host.
|
||||
✅ No New Privileges – Linux Kernel feature which disables container processes from gaining additional privileges.
|
||||
|
||||
## MODEL TRANSPORTS
|
||||
|
||||
RamaLama supports multiple AI model registries types called transports. Supported transports:
|
||||
|
||||
| Transports | Prefix | Web Site |
|
||||
| ------------- | ------ | --------------------------------------------------- |
|
||||
| URL based | https://, http://, file:// | `https://web.site/ai.model`, `file://tmp/ai.model`|
|
||||
| HuggingFace | huggingface://, hf://, hf.co/ | [`huggingface.co`](https://www.huggingface.co)|
|
||||
| ModelScope | modelscope://, ms:// | [`modelscope.cn`](https://modelscope.cn/)|
|
||||
| Ollama | ollama:// | [`ollama.com`](https://www.ollama.com)|
|
||||
| OCI Container Registries | oci:// | [`opencontainers.org`](https://opencontainers.org)|
|
||||
|||Examples: [`quay.io`](https://quay.io), [`Docker Hub`](https://docker.io),[`Artifactory`](https://artifactory.com)|
|
||||
|
||||
RamaLama uses to the Ollama registry transport. This default can be overridden in the `ramalama.conf` file or via the RAMALAMA_TRANSPORTS
|
||||
environment. `export RAMALAMA_TRANSPORT=huggingface` Changes RamaLama to use huggingface transport.
|
||||
|
||||
Modify individual model transports by specifying the `huggingface://`, `oci://`, `ollama://`, `https://`, `http://`, `file://` prefix to the model.
|
||||
|
||||
URL support means if a model is on a web site or even on your local system, you can run it directly.
|
||||
|
||||
ramalama pull `huggingface://`afrideva/Tiny-Vicuna-1B-GGUF/tiny-vicuna-1b.q2_k.gguf
|
||||
|
||||
ramalama run `file://`$HOME/granite-7b-lab-Q4_K_M.gguf
|
||||
|
||||
To make it easier for users, RamaLama uses shortname files, which container
|
||||
alias names for fully specified AI Models allowing users to specify the shorter
|
||||
names when referring to models. RamaLama reads shortnames.conf files if they
|
||||
exist . These files contain a list of name value pairs for specification of
|
||||
the model. The following table specifies the order which RamaLama reads the files
|
||||
. Any duplicate names that exist override previously defined shortnames.
|
||||
|
||||
| Shortnames type | Path |
|
||||
| --------------- | ---------------------------------------- |
|
||||
| Distribution | /usr/share/ramalama/shortnames.conf |
|
||||
| Local install | /usr/local/share/ramalama/shortnames.conf |
|
||||
| Administrators | /etc/ramamala/shortnames.conf |
|
||||
| Users | $HOME/.config/ramalama/shortnames.conf |
|
||||
|
||||
```toml
|
||||
$ cat /usr/share/ramalama/shortnames.conf
|
||||
[shortnames]
|
||||
"tiny" = "ollama://tinyllama"
|
||||
"granite" = "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf"
|
||||
"granite:7b" = "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf"
|
||||
"ibm/granite" = "huggingface://instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf"
|
||||
"merlinite" = "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf"
|
||||
"merlinite:7b" = "huggingface://instructlab/merlinite-7b-lab-GGUF/merlinite-7b-lab-Q4_K_M.gguf"
|
||||
...
|
||||
```
|
||||
**ramalama [GLOBAL OPTIONS]**
|
||||
|
||||
## GLOBAL OPTIONS
|
||||
|
||||
#### **--debug**
|
||||
print debug messages
|
||||
|
||||
#### **--dryrun**
|
||||
show container runtime command without executing it (default: False)
|
||||
|
||||
#### **--engine**
|
||||
run RamaLama using the specified container engine. Default is `podman` if installed otherwise docker.
|
||||
The default can be overridden in the ramalama.conf file or via the RAMALAMA_CONTAINER_ENGINE environment variable.
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--nocontainer**
|
||||
Do not run RamaLama workloads in containers (default: False)
|
||||
The default can be overridden in the ramalama.conf file.
|
||||
|
||||
:::note
|
||||
OCI images cannot be used with the --nocontainer option. This option disables the following features: Automatic GPU acceleration, containerized environment isolation, and dynamic resource allocation. For a complete list of affected features, please see the RamaLama documentation at [link-to-feature-list].
|
||||
:::
|
||||
|
||||
#### **--quiet**
|
||||
Decrease output verbosity.
|
||||
|
||||
#### **--runtime**=*llama.cpp* | *vllm*
|
||||
specify the runtime to use, valid options are 'llama.cpp' and 'vllm' (default: llama.cpp)
|
||||
The default can be overridden in the ramalama.conf file.
|
||||
|
||||
#### **--store**=STORE
|
||||
store AI Models in the specified directory (default rootless: `$HOME/.local/share/ramalama`, default rootful: `/var/lib/ramalama`)
|
||||
The default can be overridden in the ramalama.conf file.
|
||||
|
||||
## COMMANDS
|
||||
|
||||
| Command | Description |
|
||||
| ------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| [ramalama-bench(1)](../../commands/ramalama/bench) | benchmark specified AI Model |
|
||||
| [ramalama-chat(1)](../../commands/ramalama/chat) | OpenAI chat with the specified REST API URL |
|
||||
| [ramalama-containers(1)](../../commands/ramalama/containers)| list all RamaLama containers |
|
||||
| [ramalama-convert(1)](../../commands/ramalama/convert) | convert AI Models from local storage to OCI Image |
|
||||
| [ramalama-info(1)](../../commands/ramalama/info) | display RamaLama configuration information |
|
||||
| [ramalama-inspect(1)](../../commands/ramalama/inspect) | inspect the specified AI Model |
|
||||
| [ramalama-list(1)](../../commands/ramalama/list) | list all downloaded AI Models |
|
||||
| [ramalama-login(1)](../../commands/ramalama/login) | login to remote registry |
|
||||
| [ramalama-logout(1)](../../commands/ramalama/logout) | logout from remote registry |
|
||||
| [ramalama-perplexity(1)](../../commands/ramalama/perplexity)| calculate the perplexity value of an AI Model |
|
||||
| [ramalama-pull(1)](../../commands/ramalama/pull) | pull AI Models from Model registries to local storage |
|
||||
| [ramalama-push(1)](../../commands/ramalama/push) | push AI Models from local storage to remote registries |
|
||||
| [ramalama-rag(1)](../../commands/ramalama/rag) | generate and convert Retrieval Augmented Generation (RAG) data from provided documents into an OCI Image |
|
||||
| [ramalama-rm(1)](../../commands/ramalama/rm) | remove AI Models from local storage |
|
||||
| [ramalama-run(1)](../../commands/ramalama/run) | run specified AI Model as a chatbot |
|
||||
| [ramalama-serve(1)](../../commands/ramalama/serve) | serve REST API on specified AI Model |
|
||||
| [ramalama-stop(1)](../../commands/ramalama/stop) | stop named container that is running AI Model |
|
||||
| [ramalama-version(1)](../../commands/ramalama/version) | display version of RamaLama |
|
||||
|
||||
## CONFIGURATION FILES
|
||||
|
||||
**ramalama.conf** (`/usr/share/ramalama/ramalama.conf`, `/etc/ramalama/ramalama.conf`, `$HOME/.config/ramalama/ramalama.conf`)
|
||||
|
||||
RamaLama has builtin defaults for command line options. These defaults can be overridden using the ramalama.conf configuration files.
|
||||
|
||||
Distributions ship the `/usr/share/ramalama/ramalama.conf` file with their default settings. Administrators can override fields in this file by creating the `/etc/ramalama/ramalama.conf` file. Users can further modify defaults by creating the `$HOME/.config/ramalama/ramalama.conf` file. RamaLama merges its builtin defaults with the specified fields from these files, if they exist. Fields specified in the users file override the administrator's file, which overrides the distribution's file, which override the built-in defaults.
|
||||
|
||||
RamaLama uses builtin defaults if no ramalama.conf file is found.
|
||||
|
||||
If the **RAMALAMA_CONFIG** environment variable is set, then its value is used for the ramalama.conf file rather than the default.
|
||||
|
||||
## ENVIRONMENT VARIABLES
|
||||
|
||||
RamaLama default behaviour can also be overridden via environment variables,
|
||||
although the recommended way is to use the ramalama.conf file.
|
||||
|
||||
| ENV Name | Description |
|
||||
| ------------------------- | ------------------------------------------ |
|
||||
| RAMALAMA_CONFIG | specific configuration file to be used |
|
||||
| RAMALAMA_CONTAINER_ENGINE | container engine (Podman/Docker) to use |
|
||||
| RAMALAMA_FORCE_EMOJI | define whether `ramalama run` uses EMOJI |
|
||||
| RAMALAMA_IMAGE | container image to use for serving AI Model|
|
||||
| RAMALAMA_IN_CONTAINER | Run RamaLama in the default container |
|
||||
| RAMALAMA_STORE | location to store AI Models |
|
||||
| RAMALAMA_TRANSPORT | default AI Model transport (ollama, huggingface, OCI) |
|
||||
|
||||
## See Also
|
||||
[podman(1)](https://github.com/containers/podman/blob/main/docs/source/markdown/podman.1.md), **docker(1)**, [ramalama.conf(5)](../../configuration/conf), [ramalama-cuda(7)](../../platform-guides/cuda), [ramalama-macos(7)](../../platform-guides/macos)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
42
docsite/docs/commands/ramalama/rm.mdx
Normal file
42
docsite/docs/commands/ramalama/rm.mdx
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: ramalama rm.1
|
||||
description: remove AI Models from local storage
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-rm.1.md
|
||||
---
|
||||
|
||||
# ramalama rm.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama rm** [*options*] *model* [...]
|
||||
|
||||
## Description
|
||||
Specify one or more AI Models to be removed from local storage
|
||||
|
||||
## Options
|
||||
|
||||
#### **--all**, **-a**
|
||||
remove all local Models
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--ignore**
|
||||
ignore errors when specified Model does not exist
|
||||
|
||||
## Examples
|
||||
|
||||
```bash
|
||||
$ ramalama rm ollama://tinyllama
|
||||
|
||||
$ ramalama rm --all
|
||||
|
||||
$ ramalama rm --ignore bogusmodel
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
222
docsite/docs/commands/ramalama/run.mdx
Normal file
222
docsite/docs/commands/ramalama/run.mdx
Normal file
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: ramalama run.1
|
||||
description: run specified AI Model as a chatbot
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-run.1.md
|
||||
---
|
||||
|
||||
# ramalama run.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama run** [*options*] *model* [arg ...]
|
||||
|
||||
## MODEL TRANSPORTS
|
||||
|
||||
| Transports | Prefix | Web Site |
|
||||
| ------------- | ------ | --------------------------------------------------- |
|
||||
| URL based | https://, http://, file:// | `https://web.site/ai.model`, `file://tmp/ai.model`|
|
||||
| HuggingFace | huggingface://, hf://, hf.co/ | [`huggingface.co`](https://www.huggingface.co)|
|
||||
| ModelScope | modelscope://, ms:// | [`modelscope.cn`](https://modelscope.cn/)|
|
||||
| Ollama | ollama:// | [`ollama.com`](https://www.ollama.com)|
|
||||
| OCI Container Registries | oci:// | [`opencontainers.org`](https://opencontainers.org)|
|
||||
|||Examples: [`quay.io`](https://quay.io), [`Docker Hub`](https://docker.io),[`Artifactory`](https://artifactory.com)|
|
||||
|
||||
RamaLama defaults to the Ollama registry transport. This default can be overridden in the `ramalama.conf` file or via the RAMALAMA_TRANSPORTS
|
||||
environment. `export RAMALAMA_TRANSPORT=huggingface` Changes RamaLama to use huggingface transport.
|
||||
|
||||
Modify individual model transports by specifying the `huggingface://`, `oci://`, `ollama://`, `https://`, `http://`, `file://` prefix to the model.
|
||||
|
||||
URL support means if a model is on a web site or even on your local system, you can run it directly.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--api**=**llama-stack** | none**
|
||||
unified API layer for Inference, RAG, Agents, Tools, Safety, Evals, and Telemetry.(default: none)
|
||||
The default can be overridden in the ramalama.conf file.
|
||||
|
||||
#### **--authfile**=*password*
|
||||
path of the authentication file for OCI registries
|
||||
|
||||
#### **--color**
|
||||
Indicate whether or not to use color in the chat.
|
||||
Possible values are "never", "always" and "auto". (default: auto)
|
||||
|
||||
#### **--ctx-size**, **-c**
|
||||
size of the prompt context. This option is also available as **--max-model-len**. Applies to llama.cpp and vllm regardless of alias (default: 2048, 0 = loaded from model)
|
||||
|
||||
#### **--device**
|
||||
Add a host device to the container. Optional permissions parameter can
|
||||
be used to specify device permissions by combining r for read, w for
|
||||
write, and m for mknod(2).
|
||||
|
||||
Example: --device=/dev/dri/renderD128:/dev/xvdc:rwm
|
||||
|
||||
The device specification is passed directly to the underlying container engine. See documentation of the supported container engine for more information.
|
||||
|
||||
#### **--env**=
|
||||
|
||||
Set environment variables inside of the container.
|
||||
|
||||
This option allows arbitrary environment variables that are available for the
|
||||
process to be launched inside of the container. If an environment variable is
|
||||
specified without a value, the container engine checks the host environment
|
||||
for a value and set the variable only if it is set on the host.
|
||||
|
||||
#### **--help**, **-h**
|
||||
Show this help message and exit
|
||||
|
||||
#### **--image**=IMAGE
|
||||
OCI container image to run with specified AI model. RamaLama defaults to using
|
||||
images based on the accelerator it discovers. For example:
|
||||
`quay.io/ramalama/ramalama`. See the table below for all default images.
|
||||
The default image tag is based on the minor version of the RamaLama package.
|
||||
Version 0.11.1 of RamaLama pulls an image with a `:0.11` tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
|
||||
|
||||
The default can be overridden in the ramalama.conf file or via the
|
||||
RAMALAMA_IMAGE environment variable. `export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2` tells
|
||||
RamaLama to use the `quay.io/ramalama/aiimage:1.2` image.
|
||||
|
||||
Accelerated images:
|
||||
|
||||
| Accelerator | Image |
|
||||
| ------------------------| -------------------------- |
|
||||
| CPU, Apple | quay.io/ramalama/ramalama |
|
||||
| HIP_VISIBLE_DEVICES | quay.io/ramalama/rocm |
|
||||
| CUDA_VISIBLE_DEVICES | quay.io/ramalama/cuda |
|
||||
| ASAHI_VISIBLE_DEVICES | quay.io/ramalama/asahi |
|
||||
| INTEL_VISIBLE_DEVICES | quay.io/ramalama/intel-gpu |
|
||||
| ASCEND_VISIBLE_DEVICES | quay.io/ramalama/cann |
|
||||
| MUSA_VISIBLE_DEVICES | quay.io/ramalama/musa |
|
||||
|
||||
#### **--keep-groups**
|
||||
pass --group-add keep-groups to podman (default: False)
|
||||
If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
|
||||
|
||||
#### **--keepalive**
|
||||
duration to keep a model loaded (e.g. 5m)
|
||||
|
||||
#### **--name**, **-n**
|
||||
name of the container to run the Model in
|
||||
|
||||
#### **--network**=*none*
|
||||
set the network mode for the container
|
||||
|
||||
#### **--ngl**
|
||||
number of gpu layers, 0 means CPU inferencing, 999 means use max layers (default: -1)
|
||||
The default -1, means use whatever is automatically deemed appropriate (0 or 999)
|
||||
|
||||
#### **--oci-runtime**
|
||||
|
||||
Override the default OCI runtime used to launch the container. Container
|
||||
engines like Podman and Docker, have their own default oci runtime that they
|
||||
use. Using this option RamaLama will override these defaults.
|
||||
|
||||
On Nvidia based GPU systems, RamaLama defaults to using the
|
||||
`nvidia-container-runtime`. Use this option to override this selection.
|
||||
|
||||
#### **--prefix**
|
||||
Prefix for the user prompt (default: 🦭 > )
|
||||
|
||||
#### **--privileged**
|
||||
By default, RamaLama containers are unprivileged (=false) and cannot, for
|
||||
example, modify parts of the operating system. This is because by de‐
|
||||
fault a container is only allowed limited access to devices. A "privi‐
|
||||
leged" container is given the same access to devices as the user launch‐
|
||||
ing the container, with the exception of virtual consoles (/dev/tty\d+)
|
||||
when running in systemd mode (--systemd=always).
|
||||
|
||||
A privileged container turns off the security features that isolate the
|
||||
container from the host. Dropped Capabilities, limited devices, read-
|
||||
only mount points, Apparmor/SELinux separation, and Seccomp filters are
|
||||
all disabled. Due to the disabled security features, the privileged
|
||||
field should almost never be set as containers can easily break out of
|
||||
confinement.
|
||||
|
||||
Containers running in a user namespace (e.g., rootless containers) can‐
|
||||
not have more privileges than the user that launched them.
|
||||
|
||||
#### **--pull**=*policy*
|
||||
Pull image policy. The default is **missing**.
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
#### **--rag**=
|
||||
Specify path to Retrieval-Augmented Generation (RAG) database or an OCI Image containing a RAG database
|
||||
|
||||
#### **--runtime-args**="*args*"
|
||||
Add *args* to the runtime (llama.cpp or vllm) invocation.
|
||||
|
||||
#### **--seed**=
|
||||
Specify seed rather than using random seed model interaction
|
||||
|
||||
#### **--selinux**=*true*
|
||||
Enable SELinux container separation
|
||||
|
||||
#### **--temp**="0.8"
|
||||
Temperature of the response from the AI Model
|
||||
llama.cpp explains this as:
|
||||
|
||||
The lower the number is, the more deterministic the response.
|
||||
|
||||
The higher the number is the more creative the response is, but more likely to hallucinate when set too high.
|
||||
|
||||
Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories
|
||||
|
||||
#### **--threads**, **-t**
|
||||
Maximum number of cpu threads to use.
|
||||
The default is to use half the cores available on this system for the number of threads.
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
## Description
|
||||
Run specified AI Model as a chat bot. RamaLama pulls specified AI Model from
|
||||
registry if it does not exist in local storage. By default a prompt for a chat
|
||||
bot is started. When arguments are specified, the arguments will be given
|
||||
to the AI Model and the output returned without entering the chatbot.
|
||||
|
||||
## Examples
|
||||
|
||||
Run command without arguments starts a chatbot
|
||||
```text
|
||||
ramalama run granite
|
||||
>
|
||||
```
|
||||
|
||||
Run command with local downloaded model for 10 minutes
|
||||
```text
|
||||
ramalama run --keepalive 10m file:///tmp/mymodel
|
||||
>
|
||||
```
|
||||
|
||||
```text
|
||||
ramalama run merlinite "when is the summer solstice"
|
||||
The summer solstice, which is the longest day of the year, will happen on June ...
|
||||
```
|
||||
|
||||
Run command with a custom prompt and a file passed by the stdin
|
||||
```text
|
||||
cat file.py | ramalama run quay.io/USER/granite-code:1.0 'what does this program do?'
|
||||
|
||||
This program is a Python script that allows the user to interact with a terminal. ...
|
||||
[end of text]
|
||||
```
|
||||
|
||||
## Exit Codes:
|
||||
|
||||
0 Success
|
||||
124 RamaLama command did not exit within the keepalive time.
|
||||
|
||||
## NVIDIA CUDA Support
|
||||
|
||||
See [ramalama-cuda(7)](../../platform-guides/cuda) for setting up the host Linux system for CUDA support.
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama), [ramalama-cuda(7)](../../platform-guides/cuda)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
529
docsite/docs/commands/ramalama/serve.mdx
Normal file
529
docsite/docs/commands/ramalama/serve.mdx
Normal file
@@ -0,0 +1,529 @@
|
||||
---
|
||||
title: ramalama serve.1
|
||||
description: serve REST API on specified AI Model
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-serve.1.md
|
||||
---
|
||||
|
||||
# ramalama serve.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama serve** [*options*] _model_
|
||||
|
||||
## Description
|
||||
Serve specified AI Model as a chat bot. RamaLama pulls specified AI Model from
|
||||
registry if it does not exist in local storage.
|
||||
|
||||
## MODEL TRANSPORTS
|
||||
|
||||
| Transports | Prefix | Web Site |
|
||||
| ------------- | ------ | --------------------------------------------------- |
|
||||
| URL based | https://, http://, file:// | `https://web.site/ai.model`, `file://tmp/ai.model`|
|
||||
| HuggingFace | huggingface://, hf://, hf.co/ | [`huggingface.co`](https://www.huggingface.co)|
|
||||
| ModelScope | modelscope://, ms:// | [`modelscope.cn`](https://modelscope.cn/)|
|
||||
| Ollama | ollama:// | [`ollama.com`](https://www.ollama.com)|
|
||||
| OCI Container Registries | oci:// | [`opencontainers.org`](https://opencontainers.org)|
|
||||
|||Examples: [`quay.io`](https://quay.io), [`Docker Hub`](https://docker.io),[`Artifactory`](https://artifactory.com)|
|
||||
|
||||
RamaLama defaults to the Ollama registry transport. This default can be overridden in the `ramalama.conf` file or via the RAMALAMA_TRANSPORTS
|
||||
environment. `export RAMALAMA_TRANSPORT=huggingface` Changes RamaLama to use huggingface transport.
|
||||
|
||||
Modify individual model transports by specifying the `huggingface://`, `oci://`, `ollama://`, `https://`, `http://`, `file://` prefix to the model.
|
||||
|
||||
URL support means if a model is on a web site or even on your local system, you can run it directly.
|
||||
|
||||
## REST API ENDPOINTS
|
||||
Under the hood, `ramalama-serve` uses the `llama.cpp` HTTP server by default. When using `--runtime=vllm`, it uses the vLLM server. When using `--runtime=mlx`, it uses the MLX LM server.
|
||||
|
||||
For REST API endpoint documentation, see:
|
||||
- llama.cpp: [https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md#api-endpoints](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md#api-endpoints)
|
||||
- vLLM: [https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html](https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html)
|
||||
- MLX LM: [https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md](https://github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md)
|
||||
|
||||
## Options
|
||||
|
||||
#### **--api**=**llama-stack** | none**
|
||||
Unified API layer for Inference, RAG, Agents, Tools, Safety, Evals, and Telemetry.(default: none)
|
||||
The default can be overridden in the ramalama.conf file.
|
||||
|
||||
#### **--authfile**=*password*
|
||||
Path of the authentication file for OCI registries
|
||||
|
||||
#### **--ctx-size**, **-c**
|
||||
size of the prompt context. This option is also available as **--max-model-len**. Applies to llama.cpp and vllm regardless of alias (default: 2048, 0 = loaded from model)
|
||||
|
||||
#### **--detach**, **-d**
|
||||
Run the container in the background and print the new container ID.
|
||||
The default is TRUE. The --nocontainer option forces this option to False.
|
||||
|
||||
Use the `ramalama stop` command to stop the container running the served ramalama Model.
|
||||
|
||||
#### **--device**
|
||||
Add a host device to the container. Optional permissions parameter can
|
||||
be used to specify device permissions by combining r for read, w for
|
||||
write, and m for mknod(2).
|
||||
|
||||
Example: --device=/dev/dri/renderD128:/dev/xvdc:rwm
|
||||
|
||||
The device specification is passed directly to the underlying container engine. See documentation of the supported container engine for more information.
|
||||
|
||||
#### **--dri**=*on* | *off*
|
||||
Enable or disable mounting `/dev/dri` into the container when running with `--api=llama-stack` (enabled by default). Use to prevent access to the host device when not required, or avoid errors in environments where `/dev/dri` is not available.
|
||||
|
||||
#### **--env**=
|
||||
|
||||
Set environment variables inside of the container.
|
||||
|
||||
This option allows arbitrary environment variables that are available for the
|
||||
process to be launched inside of the container. If an environment variable is
|
||||
specified without a value, the container engine checks the host environment
|
||||
for a value and set the variable only if it is set on the host.
|
||||
|
||||
#### **--generate**=type
|
||||
Generate specified configuration format for running the AI Model as a service
|
||||
|
||||
| Key | Description |
|
||||
| ------------ | -------------------------------------------------------------------------|
|
||||
| quadlet | Podman supported container definition for running AI Model under systemd |
|
||||
| kube | Kubernetes YAML definition for running the AI Model as a service |
|
||||
| quadlet/kube | Kubernetes YAML definition for running the AI Model as a service and Podman supported container definition for running the Kube YAML specified pod under systemd|
|
||||
|
||||
Optionally, an output directory for the generated files can be specified by
|
||||
appending the path to the type, e.g. `--generate kube:/etc/containers/systemd`.
|
||||
|
||||
#### **--help**, **-h**
|
||||
show this help message and exit
|
||||
|
||||
#### **--host**="0.0.0.0"
|
||||
IP address for llama.cpp to listen on.
|
||||
|
||||
#### **--image**=IMAGE
|
||||
OCI container image to run with specified AI model. RamaLama defaults to using
|
||||
images based on the accelerator it discovers. For example:
|
||||
`quay.io/ramalama/ramalama`. See the table above for all default images.
|
||||
The default image tag is based on the minor version of the RamaLama package.
|
||||
Version 0.11.1 of RamaLama pulls an image with a `:0.11` tag from the quay.io/ramalama OCI repository. The --image option overrides this default.
|
||||
|
||||
The default can be overridden in the ramalama.conf file or via the
|
||||
RAMALAMA_IMAGE environment variable. `export RAMALAMA_IMAGE=quay.io/ramalama/aiimage:1.2` tells
|
||||
RamaLama to use the `quay.io/ramalama/aiimage:1.2` image.
|
||||
|
||||
Accelerated images:
|
||||
|
||||
| Accelerator | Image |
|
||||
| ------------------------| -------------------------- |
|
||||
| CPU, Apple | quay.io/ramalama/ramalama |
|
||||
| HIP_VISIBLE_DEVICES | quay.io/ramalama/rocm |
|
||||
| CUDA_VISIBLE_DEVICES | quay.io/ramalama/cuda |
|
||||
| ASAHI_VISIBLE_DEVICES | quay.io/ramalama/asahi |
|
||||
| INTEL_VISIBLE_DEVICES | quay.io/ramalama/intel-gpu |
|
||||
| ASCEND_VISIBLE_DEVICES | quay.io/ramalama/cann |
|
||||
| MUSA_VISIBLE_DEVICES | quay.io/ramalama/musa |
|
||||
|
||||
#### **--keep-groups**
|
||||
pass --group-add keep-groups to podman (default: False)
|
||||
If GPU device on host system is accessible to user via group access, this option leaks the groups into the container.
|
||||
|
||||
#### **--model-draft**
|
||||
|
||||
A draft model is a smaller, faster model that helps accelerate the decoding
|
||||
process of larger, more complex models, like Large Language Models (LLMs). It
|
||||
works by generating candidate sequences of tokens that the larger model then
|
||||
verifies and refines. This approach, often referred to as speculative decoding,
|
||||
can significantly improve the speed of inferencing by reducing the number of
|
||||
times the larger model needs to be invoked.
|
||||
|
||||
Use --runtime-arg to pass the other draft model related parameters.
|
||||
Make sure the sampling parameters like top_k on the web UI are set correctly.
|
||||
|
||||
#### **--name**, **-n**
|
||||
Name of the container to run the Model in.
|
||||
|
||||
#### **--network**=*""*
|
||||
set the network mode for the container
|
||||
|
||||
#### **--ngl**
|
||||
number of gpu layers, 0 means CPU inferencing, 999 means use max layers (default: -1)
|
||||
The default -1, means use whatever is automatically deemed appropriate (0 or 999)
|
||||
|
||||
#### **--oci-runtime**
|
||||
|
||||
Override the default OCI runtime used to launch the container. Container
|
||||
engines like Podman and Docker, have their own default oci runtime that they
|
||||
use. Using this option RamaLama will override these defaults.
|
||||
|
||||
On Nvidia based GPU systems, RamaLama defaults to using the
|
||||
`nvidia-container-runtime`. Use this option to override this selection.
|
||||
|
||||
#### **--port**, **-p**
|
||||
port for AI Model server to listen on. It must be available. If not specified,
|
||||
the serving port will be 8080 if available, otherwise a free port in 8081-8090 range.
|
||||
|
||||
#### **--privileged**
|
||||
By default, RamaLama containers are unprivileged (=false) and cannot, for
|
||||
example, modify parts of the operating system. This is because by de‐
|
||||
fault a container is only allowed limited access to devices. A "privi‐
|
||||
leged" container is given the same access to devices as the user launch‐
|
||||
ing the container, with the exception of virtual consoles (/dev/tty\d+)
|
||||
when running in systemd mode (--systemd=always).
|
||||
|
||||
A privileged container turns off the security features that isolate the
|
||||
container from the host. Dropped Capabilities, limited devices, read-
|
||||
only mount points, Apparmor/SELinux separation, and Seccomp filters are
|
||||
all disabled. Due to the disabled security features, the privileged
|
||||
field should almost never be set as containers can easily break out of
|
||||
confinement.
|
||||
|
||||
Containers running in a user namespace (e.g., rootless containers) can‐
|
||||
not have more privileges than the user that launched them.
|
||||
|
||||
#### **--pull**=*policy*
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
#### **--rag**=
|
||||
Specify path to Retrieval-Augmented Generation (RAG) database or an OCI Image containing a RAG database
|
||||
|
||||
:::note
|
||||
RAG support requires AI Models be run within containers, --nocontainer not supported. Docker does not support image mounting, meaning Podman support required.
|
||||
:::
|
||||
|
||||
#### **--runtime-args**="*args*"
|
||||
Add *args* to the runtime (llama.cpp or vllm) invocation.
|
||||
|
||||
#### **--seed**=
|
||||
Specify seed rather than using random seed model interaction
|
||||
|
||||
#### **--selinux**=*true*
|
||||
Enable SELinux container separation
|
||||
|
||||
#### **--temp**="0.8"
|
||||
Temperature of the response from the AI Model.
|
||||
llama.cpp explains this as:
|
||||
|
||||
The lower the number is, the more deterministic the response.
|
||||
|
||||
The higher the number is the more creative the response is, but more likely to hallucinate when set too high.
|
||||
|
||||
Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories
|
||||
|
||||
#### **--threads**, **-t**
|
||||
Maximum number of cpu threads to use.
|
||||
The default is to use half the cores available on this system for the number of threads.
|
||||
|
||||
#### **--tls-verify**=*true*
|
||||
require HTTPS and verify certificates when contacting OCI registries
|
||||
|
||||
#### **--webui**=*on* | *off*
|
||||
Enable or disable the web UI for the served model (enabled by default). When set to "on" (the default), the web interface is properly initialized. When set to "off", the `--no-webui` option is passed to the llama-server command to disable the web interface.
|
||||
|
||||
## Examples
|
||||
### Run two AI Models at the same time. Notice both are running within Podman Containers.
|
||||
```bash
|
||||
$ ramalama serve -d -p 8080 --name mymodel ollama://smollm:135m
|
||||
09b0e0d26ed28a8418fb5cd0da641376a08c435063317e89cf8f5336baf35cfa
|
||||
|
||||
$ ramalama serve -d -n example --port 8081 oci://quay.io/mmortari/gguf-py-example/v1/example.gguf
|
||||
3f64927f11a5da5ded7048b226fbe1362ee399021f5e8058c73949a677b6ac9c
|
||||
|
||||
$ podman ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
09b0e0d26ed2 quay.io/ramalama/ramalama:latest /usr/bin/ramalama... 32 seconds ago Up 32 seconds 0.0.0.0:8081->8081/tcp ramalama_sTLNkijNNP
|
||||
3f64927f11a5 quay.io/ramalama/ramalama:latest /usr/bin/ramalama... 17 seconds ago Up 17 seconds 0.0.0.0:8082->8082/tcp ramalama_YMPQvJxN97
|
||||
```
|
||||
|
||||
### Generate quadlet service off of HuggingFace granite Model
|
||||
```bash
|
||||
$ ramalama serve --name MyGraniteServer --generate=quadlet granite
|
||||
Generating quadlet file: MyGraniteServer.container
|
||||
|
||||
$ cat MyGraniteServer.container
|
||||
[Unit]
|
||||
Description=RamaLama $HOME/.local/share/ramalama/models/huggingface/instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf AI Model Service
|
||||
After=local-fs.target
|
||||
|
||||
[Container]
|
||||
AddDevice=-/dev/accel
|
||||
AddDevice=-/dev/dri
|
||||
AddDevice=-/dev/kfd
|
||||
Exec=llama-server --port 1234 -m $HOME/.local/share/ramalama/models/huggingface/instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf
|
||||
Image=quay.io/ramalama/ramalama:latest
|
||||
Mount=type=bind,src=/home/dwalsh/.local/share/ramalama/models/huggingface/instructlab/granite-7b-lab-GGUF/granite-7b-lab-Q4_K_M.gguf,target=/mnt/models/model.file,ro,Z
|
||||
ContainerName=MyGraniteServer
|
||||
PublishPort=8080
|
||||
|
||||
[Install]
|
||||
# Start by default on boot
|
||||
WantedBy=multi-user.target default.target
|
||||
|
||||
$ mv MyGraniteServer.container $HOME/.config/containers/systemd/
|
||||
$ systemctl --user daemon-reload
|
||||
$ systemctl start --user MyGraniteServer
|
||||
$ systemctl status --user MyGraniteServer
|
||||
● MyGraniteServer.service - RamaLama granite AI Model Service
|
||||
Loaded: loaded (/home/dwalsh/.config/containers/systemd/MyGraniteServer.container; generated)
|
||||
Drop-In: /usr/lib/systemd/user/service.d
|
||||
└─10-timeout-abort.conf
|
||||
Active: active (running) since Fri 2024-09-27 06:54:17 EDT; 3min 3s ago
|
||||
Main PID: 3706287 (conmon)
|
||||
Tasks: 20 (limit: 76808)
|
||||
Memory: 1.0G (peak: 1.0G)
|
||||
|
||||
...
|
||||
$ podman ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
7bb35b97a0fe quay.io/ramalama/ramalama:latest llama-server --po... 3 minutes ago Up 3 minutes 0.0.0.0:43869->8080/tcp MyGraniteServer
|
||||
```
|
||||
|
||||
### Generate quadlet service off of tiny OCI Model
|
||||
```bash
|
||||
$ ramalama --runtime=vllm serve --name tiny --generate=quadlet oci://quay.io/rhatdan/tiny:latest
|
||||
Downloading quay.io/rhatdan/tiny:latest...
|
||||
Trying to pull quay.io/rhatdan/tiny:latest...
|
||||
Getting image source signatures
|
||||
Copying blob 65ba8d40e14a skipped: already exists
|
||||
Copying blob e942a1bf9187 skipped: already exists
|
||||
Copying config d8e0b28ee6 done |
|
||||
Writing manifest to image destination
|
||||
Generating quadlet file: tiny.container
|
||||
Generating quadlet file: tiny.image
|
||||
Generating quadlet file: tiny.volume
|
||||
|
||||
$cat tiny.container
|
||||
[Unit]
|
||||
Description=RamaLama /run/model/model.file AI Model Service
|
||||
After=local-fs.target
|
||||
|
||||
[Container]
|
||||
AddDevice=-/dev/accel
|
||||
AddDevice=-/dev/dri
|
||||
AddDevice=-/dev/kfd
|
||||
Exec=vllm serve --port 8080 /run/model/model.file
|
||||
Image=quay.io/ramalama/ramalama:latest
|
||||
Mount=type=volume,source=tiny:latest.volume,dest=/mnt/models,ro
|
||||
ContainerName=tiny
|
||||
PublishPort=8080
|
||||
|
||||
[Install]
|
||||
# Start by default on boot
|
||||
WantedBy=multi-user.target default.target
|
||||
|
||||
$ cat tiny.volume
|
||||
[Volume]
|
||||
Driver=image
|
||||
Image=tiny:latest.image
|
||||
|
||||
$ cat tiny.image
|
||||
[Image]
|
||||
Image=quay.io/rhatdan/tiny:latest
|
||||
```
|
||||
|
||||
### Generate quadlet service off of tiny OCI Model and output to directory
|
||||
```bash
|
||||
$ ramalama --runtime=vllm serve --name tiny --generate=quadlet:~/.config/containers/systemd/ oci://quay.io/rhatdan/tiny:latest
|
||||
Generating quadlet file: tiny.container
|
||||
Generating quadlet file: tiny.image
|
||||
Generating quadlet file: tiny.volume
|
||||
|
||||
$ ls ~/.config/containers/systemd/
|
||||
tiny.container tiny.image tiny.volume
|
||||
```
|
||||
|
||||
### Generate a kubernetes YAML file named MyTinyModel
|
||||
```bash
|
||||
$ ramalama serve --name MyTinyModel --generate=kube oci://quay.io/rhatdan/tiny-car:latest
|
||||
Generating Kubernetes YAML file: MyTinyModel.yaml
|
||||
$ cat MyTinyModel.yaml
|
||||
# Save the output of this file and use kubectl create -f to import
|
||||
# it into Kubernetes.
|
||||
#
|
||||
# Created with ramalama-0.0.21
|
||||
apiVersion: v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: MyTinyModel
|
||||
labels:
|
||||
app: MyTinyModel
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: MyTinyModel
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: MyTinyModel
|
||||
spec:
|
||||
containers:
|
||||
- name: MyTinyModel
|
||||
image: quay.io/ramalama/ramalama:latest
|
||||
command: ["llama-server"]
|
||||
args: ['--port', '8080', '-m', '/mnt/models/model.file']
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
volumeMounts:
|
||||
- mountPath: /mnt/models
|
||||
subPath: /models
|
||||
name: model
|
||||
- mountPath: /dev/dri
|
||||
name: dri
|
||||
volumes:
|
||||
- image:
|
||||
reference: quay.io/rhatdan/tiny-car:latest
|
||||
pullPolicy: IfNotPresent
|
||||
name: model
|
||||
- hostPath:
|
||||
path: /dev/dri
|
||||
name: dri
|
||||
```
|
||||
|
||||
### Generate a Llama Stack Kubernetes YAML file named MyLamaStack
|
||||
```bash
|
||||
$ ramalama serve --api llama-stack --name MyLamaStack --generate=kube oci://quay.io/rhatdan/granite:latest
|
||||
Generating Kubernetes YAML file: MyLamaStack.yaml
|
||||
$ cat MyLamaStack.yaml
|
||||
apiVersion: v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: MyLamaStack
|
||||
labels:
|
||||
app: MyLamaStack
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: MyLamaStack
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
ai.ramalama: ""
|
||||
app: MyLamaStack
|
||||
ai.ramalama.model: oci://quay.io/rhatdan/granite:latest
|
||||
ai.ramalama.engine: podman
|
||||
ai.ramalama.runtime: llama.cpp
|
||||
ai.ramalama.port: 8080
|
||||
ai.ramalama.command: serve
|
||||
spec:
|
||||
containers:
|
||||
- name: model-server
|
||||
image: quay.io/ramalama/ramalama:0.8
|
||||
command: ["llama-server"]
|
||||
args: ['--port', '8081', '--model', '/mnt/models/model.file', '--alias', 'quay.io/rhatdan/granite:latest', '--ctx-size', 2048, '--temp', '0.8', '--jinja', '--cache-reuse', '256', '-v', '--threads', 16, '--host', '127.0.0.1']
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- CAP_CHOWN
|
||||
- CAP_FOWNER
|
||||
- CAP_FSETID
|
||||
- CAP_KILL
|
||||
- CAP_NET_BIND_SERVICE
|
||||
- CAP_SETFCAP
|
||||
- CAP_SETGID
|
||||
- CAP_SETPCAP
|
||||
- CAP_SETUID
|
||||
- CAP_SYS_CHROOT
|
||||
add:
|
||||
- CAP_DAC_OVERRIDE
|
||||
seLinuxOptions:
|
||||
type: spc_t
|
||||
volumeMounts:
|
||||
- mountPath: /mnt/models
|
||||
subPath: /models
|
||||
name: model
|
||||
- mountPath: /dev/dri
|
||||
name: dri
|
||||
- name: llama-stack
|
||||
image: quay.io/ramalama/llama-stack:0.8
|
||||
args:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- llama stack run --image-type venv /etc/ramalama/ramalama-run.yaml
|
||||
env:
|
||||
- name: RAMALAMA_URL
|
||||
value: http://127.0.0.1:8081
|
||||
- name: INFERENCE_MODEL
|
||||
value: quay.io/rhatdan/granite:latest
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop:
|
||||
- CAP_CHOWN
|
||||
- CAP_FOWNER
|
||||
- CAP_FSETID
|
||||
- CAP_KILL
|
||||
- CAP_NET_BIND_SERVICE
|
||||
- CAP_SETFCAP
|
||||
- CAP_SETGID
|
||||
- CAP_SETPCAP
|
||||
- CAP_SETUID
|
||||
- CAP_SYS_CHROOT
|
||||
add:
|
||||
- CAP_DAC_OVERRIDE
|
||||
seLinuxOptions:
|
||||
type: spc_t
|
||||
ports:
|
||||
- containerPort: 8321
|
||||
hostPort: 8080
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: quay.io/rhatdan/granite:latest
|
||||
name: model
|
||||
- hostPath:
|
||||
path: /dev/dri
|
||||
name: dri
|
||||
```
|
||||
|
||||
### Generate a kubernetes YAML file named MyTinyModel shown above, but also generate a quadlet to run it in.
|
||||
```bash
|
||||
$ ramalama --name MyTinyModel --generate=quadlet/kube oci://quay.io/rhatdan/tiny-car:latest
|
||||
run_cmd: podman image inspect quay.io/rhatdan/tiny-car:latest
|
||||
Generating Kubernetes YAML file: MyTinyModel.yaml
|
||||
Generating quadlet file: MyTinyModel.kube
|
||||
$ cat MyTinyModel.kube
|
||||
[Unit]
|
||||
Description=RamaLama quay.io/rhatdan/tiny-car:latest Kubernetes YAML - AI Model Service
|
||||
After=local-fs.target
|
||||
|
||||
[Kube]
|
||||
Yaml=MyTinyModel.yaml
|
||||
|
||||
[Install]
|
||||
# Start by default on boot
|
||||
WantedBy=multi-user.target default.target
|
||||
```
|
||||
|
||||
## NVIDIA CUDA Support
|
||||
|
||||
See [ramalama-cuda(7)](../../platform-guides/cuda) for setting up the host Linux system for CUDA support.
|
||||
|
||||
## MLX Support
|
||||
|
||||
The MLX runtime is designed for Apple Silicon Macs and provides optimized performance on these systems. MLX support has the following requirements:
|
||||
|
||||
- **Operating System**: macOS only
|
||||
- **Hardware**: Apple Silicon (M1, M2, M3, or later)
|
||||
- **Container Mode**: MLX requires `--nocontainer` as it cannot run inside containers
|
||||
- **Dependencies**: Requires `mlx-lm` package to be installed on the host system
|
||||
|
||||
To install MLX dependencies, use either `uv` or `pip`:
|
||||
```bash
|
||||
uv pip install mlx-lm
|
||||
# or pip:
|
||||
pip install mlx-lm
|
||||
```
|
||||
|
||||
Example usage:
|
||||
```bash
|
||||
ramalama --runtime=mlx serve hf://mlx-community/Unsloth-Phi-4-4bit
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama), [ramalama-stop(1)](../../commands/ramalama/stop), **quadlet(1)**, **systemctl(1)**, **podman(1)**, **podman-ps(1)**, [ramalama-cuda(7)](../../platform-guides/cuda)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
45
docsite/docs/commands/ramalama/stop.mdx
Normal file
45
docsite/docs/commands/ramalama/stop.mdx
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: ramalama stop.1
|
||||
description: stop named container that is running AI Model
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-stop.1.md
|
||||
---
|
||||
|
||||
# ramalama stop.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama stop** [*options*] *name*
|
||||
|
||||
Tells container engine to stop the specified container.
|
||||
|
||||
The stop command conflicts with --nocontainer option.
|
||||
|
||||
## Options
|
||||
|
||||
#### **--all**, **-a**
|
||||
Stop all containers
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
#### **--ignore**
|
||||
Ignore missing containers when stopping
|
||||
|
||||
## Description
|
||||
Stop specified container that is executing the AI Model.
|
||||
|
||||
The ramalama stop command conflicts with the --nocontainer option. The user needs to stop the RamaLama processes manually when running with --nocontainer.
|
||||
|
||||
## Examples
|
||||
|
||||
```bash
|
||||
$ ramalama stop mymodel
|
||||
$ ramalama stop --all
|
||||
```
|
||||
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama), [ramalama-run(1)](../../commands/ramalama/run), [ramalama-serve(1)](../../commands/ramalama/serve)
|
||||
|
||||
---
|
||||
|
||||
*Sep 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
35
docsite/docs/commands/ramalama/version.mdx
Normal file
35
docsite/docs/commands/ramalama/version.mdx
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
title: ramalama version.1
|
||||
description: display version of RamaLama
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-version.1.md
|
||||
---
|
||||
|
||||
# ramalama version.1
|
||||
|
||||
## Synopsis
|
||||
**ramalama version**
|
||||
|
||||
## Description
|
||||
Print version of RamaLama
|
||||
|
||||
## Options
|
||||
|
||||
#### **--help**, **-h**
|
||||
Print usage message
|
||||
|
||||
## Examples
|
||||
|
||||
```bash
|
||||
$ ramalama version
|
||||
ramalama version 0.11.1
|
||||
$ ramalama -q version
|
||||
0.11.1
|
||||
>
|
||||
```
|
||||
## See Also
|
||||
[ramalama(1)](../../commands/ramalama/ramalama)
|
||||
|
||||
---
|
||||
|
||||
*Aug 2024, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
9
docsite/docs/configuration/_category_.json
Normal file
9
docsite/docs/configuration/_category_.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"label": "Configuration",
|
||||
"position": 2,
|
||||
"collapsed": true,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Configuration files and options for RamaLama."
|
||||
}
|
||||
}
|
||||
187
docsite/docs/configuration/conf.mdx
Normal file
187
docsite/docs/configuration/conf.mdx
Normal file
@@ -0,0 +1,187 @@
|
||||
---
|
||||
title: ramalama.conf
|
||||
description: Configuration file reference
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama.conf.5.md
|
||||
---
|
||||
|
||||
# ramalama.conf
|
||||
|
||||
# NAME
|
||||
ramalama.conf - These configuration files specifies default
|
||||
configuration options and command-line flags for RamaLama.
|
||||
|
||||
# DESCRIPTION
|
||||
RamaLama reads the ramalama.conf file, if it exists
|
||||
and modify the defaults for running RamaLama on the host. ramalama.conf uses
|
||||
a TOML format that can be easily modified and versioned.
|
||||
|
||||
RamaLama reads the he following paths for global configuration that effects all users.
|
||||
|
||||
| Paths | Exception |
|
||||
| ----------------------------------- | ----------------------------------- |
|
||||
| __/usr/share/ramalama/ramalama.conf__ | On Linux |
|
||||
| __/usr/local/share/ramalama/ramalama.conf__ | On Linux |
|
||||
| __/etc/ramalama/ramalama.conf__ | On Linux |
|
||||
| __/etc/ramalama/ramalama.conf.d/\*.conf__ | On Linux |
|
||||
| __$HOME/.local/.pipx/venvs/usr/share/ramalama/ramalama.conf__ |On pipx installed macOS |
|
||||
|
||||
For user specific configuration it reads
|
||||
|
||||
| Paths | Exception |
|
||||
| ----------------------------------- | ------------------------------ |
|
||||
| __$XDG_CONFIG_HOME/ramalama/ramalama.conf__ | |
|
||||
| __$XDG_CONFIG_HOME/ramalama/ramalama.conf.d/\*.conf__ | |
|
||||
| __$HOME/.config/ramalama/ramalama.conf__ | `$XDG_CONFIG_HOME` not set |
|
||||
| __$HOME/.config/ramalama/ramalama.conf.d/\*.conf__ | `$XDG_CONFIG_HOME` not set |
|
||||
|
||||
Fields specified in ramalama conf override the default options, as well as
|
||||
options in previously read ramalama.conf files.
|
||||
|
||||
Config files in the `.d` directories, are added in alpha numeric sorted order and must end in `.conf`.
|
||||
|
||||
## ENVIRONMENT VARIABLES
|
||||
If the `RAMALAMA_CONFIG` environment variable is set, all system and user
|
||||
config files are ignored and only the specified config file is loaded.
|
||||
|
||||
# FORMAT
|
||||
The [TOML format][toml] is used as the encoding of the configuration file.
|
||||
Every option is nested under its table. No bare options are used. The format of
|
||||
TOML can be simplified to:
|
||||
|
||||
[table1]
|
||||
option = value
|
||||
|
||||
[table2]
|
||||
option = value
|
||||
|
||||
[table3]
|
||||
option = value
|
||||
|
||||
[table3.subtable1]
|
||||
option = value
|
||||
|
||||
## RAMALAMA TABLE
|
||||
The ramalama table contains settings to configure and manage the OCI runtime.
|
||||
|
||||
`[[ramalama]]`
|
||||
|
||||
**api**="none"
|
||||
|
||||
Unified API layer for Inference, RAG, Agents, Tools, Safety, Evals, and Telemetry.
|
||||
Options: llama-stack, none
|
||||
|
||||
**carimage**="registry.access.redhat.com/ubi10-micro:latest"
|
||||
|
||||
OCI model car image
|
||||
|
||||
Image to be used when building and pushing --type=car models
|
||||
|
||||
**container**=true
|
||||
|
||||
Run RamaLama in the default container.
|
||||
RAMALAMA_IN_CONTAINER environment variable overrides this field.
|
||||
|
||||
**ctx_size**=2048
|
||||
|
||||
Size of the prompt context (0 = loaded from model)
|
||||
|
||||
**env=[]
|
||||
|
||||
Environment variables to be added to the environment used when running in a container engine (e.g., Podman, Docker). For example "LLAMA_ARG_THREADS=10".
|
||||
|
||||
**engine**="podman"
|
||||
|
||||
Run RamaLama using the specified container engine.
|
||||
Valid options are: Podman and Docker
|
||||
This field can be overridden by the RAMALAMA_CONTAINER_ENGINE environment variable.
|
||||
|
||||
**host**="0.0.0.0"
|
||||
|
||||
IP address for llama.cpp to listen on.
|
||||
|
||||
**image**="quay.io/ramalama/ramalama:latest"
|
||||
|
||||
OCI container image to run with the specified AI model
|
||||
RAMALAMA_IMAGE environment variable overrides this field.
|
||||
|
||||
`[[ramalama.images]]`
|
||||
HIP_VISIBLE_DEVICES = "quay.io/ramalama/rocm"
|
||||
CUDA_VISIBLE_DEVICES = "quay.io/ramalama/cuda"
|
||||
ASAHI_VISIBLE_DEVICES = "quay.io/ramalama/asahi"
|
||||
INTEL_VISIBLE_DEVICES = "quay.io/ramalama/intel-gpu"
|
||||
ASCEND_VISIBLE_DEVICES = "quay.io/ramalama/cann"
|
||||
MUSA_VISIBLE_DEVICES = "quay.io/ramalama/musa"
|
||||
|
||||
Alternative images to use when RamaLama recognizes specific hardware
|
||||
|
||||
**keep_groups**=false
|
||||
|
||||
Pass `--group-add keep-groups` to podman, when using podman.
|
||||
In some cases this is needed to access the gpu from a rootless container
|
||||
|
||||
**ngl**=-1
|
||||
|
||||
number of gpu layers, 0 means CPU inferencing, 999 means use max layers (default: -1)
|
||||
The default -1, means use whatever is automatically deemed appropriate (0 or 999)
|
||||
|
||||
**prefix**=""
|
||||
Specify default prefix for chat and run command. By default the prefix
|
||||
is based on the container engine used.
|
||||
|
||||
| Container Engine| Prefix |
|
||||
| --------------- | ------- |
|
||||
| Podman | "🦭 > " |
|
||||
| Docker | "🐋 > " |
|
||||
| No Engine | "🦙 > " |
|
||||
| No EMOJI support| "> " |
|
||||
|
||||
**port**="8080"
|
||||
|
||||
Specify default port for services to listen on
|
||||
|
||||
**pull**="newer"
|
||||
|
||||
- **always**: Always pull the image and throw an error if the pull fails.
|
||||
- **missing**: Only pull the image when it does not exist in the local containers storage. Throw an error if no image is found and the pull fails.
|
||||
- **never**: Never pull the image but use the one from the local containers storage. Throw an error when no image is found.
|
||||
- **newer**: Pull if the image on the registry is newer than the one in the local containers storage. An image is considered to be newer when the digests are different. Comparing the time stamps is prone to errors. Pull errors are suppressed if a local image was found.
|
||||
|
||||
**rag_format**="qdrant"
|
||||
|
||||
Specify the default output format for output of the `ramalama rag` command
|
||||
Options: json, markdown, qdrant
|
||||
|
||||
**runtime**="llama.cpp"
|
||||
|
||||
Specify the AI runtime to use; valid options are 'llama.cpp', 'vllm', and 'mlx' (default: llama.cpp)
|
||||
Options: llama.cpp, vllm, mlx
|
||||
|
||||
**selinux**=false
|
||||
|
||||
SELinux container separation enforcement
|
||||
|
||||
**store**="$HOME/.local/share/ramalama"
|
||||
|
||||
Store AI Models in the specified directory
|
||||
|
||||
**temp**="0.8"
|
||||
Temperature of the response from the AI Model
|
||||
llama.cpp explains this as:
|
||||
|
||||
The lower the number is, the more deterministic the response.
|
||||
|
||||
The higher the number is the more creative the response is, but more likely to hallucinate when set too high.
|
||||
|
||||
Usage: Lower numbers are good for virtual assistants where we need deterministic responses. Higher numbers are good for roleplay or creative tasks like editing stories
|
||||
|
||||
**threads**=-1
|
||||
|
||||
maximum number of cpu threads to use for inferencing
|
||||
The default -1, uses the default of the underlying implementation
|
||||
|
||||
**transport**="ollama"
|
||||
|
||||
Specify the default transport to be used for pulling and pushing of AI Models.
|
||||
Options: oci, ollama, huggingface.
|
||||
RAMALAMA_TRANSPORT environment variable overrides this field.
|
||||
43
docsite/docs/configuration/ramalama-oci.mdx
Normal file
43
docsite/docs/configuration/ramalama-oci.mdx
Normal file
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: ramalama-oci
|
||||
description: Configuration file reference
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-oci.5.md
|
||||
---
|
||||
|
||||
# ramalama-oci
|
||||
|
||||
# NAME
|
||||
ramalama-oci - RamaLama oci:// Image Format
|
||||
|
||||
# DESCRIPTION
|
||||
RamaLama’s `oci://` transport uses [OpenContainers image registries](https://github.com/opencontainers/distribution-spec) to store AI models.
|
||||
|
||||
Each model is stored in an ordinary [container image](https://github.com/opencontainers/image-spec) (currently not using a specialized OCI artifact).
|
||||
|
||||
The image is, structurally, a single-platform image (the top-level element is an OCI Image Manifest, not an OCI Image Index).
|
||||
|
||||
## Model Data
|
||||
|
||||
Because the AI model is stored in an image, not an artifact, the data is, like in all OCI images, wrapped in the standard tar layer format.
|
||||
|
||||
The contents of the image must contain a `/models/model.file` file (or, usually, a symbolic link),
|
||||
which contains an AI model in GGUF format (consumable by `llama-server`).
|
||||
|
||||
## Metadata
|
||||
|
||||
The image’s config contains an `org.containers.type` label. The value of the label can be one of:
|
||||
|
||||
- `ai.image.model.raw`: The image contains only the AI model
|
||||
- `ai.image.model.car`: The image also contains other software; more details of that software are currently unspecified in this document.
|
||||
|
||||
## Local Image Storage
|
||||
|
||||
The model image may be pulled into, or created in, Podman’s local image storage.
|
||||
|
||||
In such a situation, to simplify identification of AI models,
|
||||
the model image may be wrapped in an OCI index pointing at the AI model image,
|
||||
and in the index, the manifests’ descriptor pointing at the AI model image contains an `org.cnai.model.model` annotation.
|
||||
|
||||
Note that the wrapping in an OCI index does not happen in all situations,
|
||||
and in particular does not happen when RamaLama uses Docker instead of Podman.
|
||||
9
docsite/docs/getting-started/_category_.json
Normal file
9
docsite/docs/getting-started/_category_.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"label": "Getting Started",
|
||||
"position": 1,
|
||||
"collapsed": true,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Get started with RamaLama - installation and basic usage."
|
||||
}
|
||||
}
|
||||
88
docsite/docs/getting-started/installation.mdx
Normal file
88
docsite/docs/getting-started/installation.mdx
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
title: Installation
|
||||
description: How to install RamaLama on your system
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Installation
|
||||
|
||||
RamaLama can be installed on multiple platforms using various methods. Choose the installation method that best fits your environment.
|
||||
|
||||
## Quick Install
|
||||
|
||||
### Universal Install Script (Linux and macOS)
|
||||
|
||||
The easiest way to install RamaLama is using the universal install script:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://ramalama.ai/install.sh | bash
|
||||
```
|
||||
|
||||
This script will automatically detect your system and install RamaLama with the appropriate method.
|
||||
|
||||
## Platform-Specific Installation
|
||||
|
||||
### Fedora
|
||||
|
||||
On Fedora systems, you can install RamaLama directly from the official repositories:
|
||||
|
||||
```bash
|
||||
sudo dnf install python3-ramalama
|
||||
```
|
||||
|
||||
### PyPI (All Platforms)
|
||||
|
||||
RamaLama is available on PyPI and can be installed using pip:
|
||||
|
||||
```bash
|
||||
pip install ramalama
|
||||
```
|
||||
|
||||
## Optional Components
|
||||
|
||||
### MLX Runtime (macOS with Apple Silicon)
|
||||
|
||||
For macOS users with Apple Silicon hardware (M1, M2, M3, or later), you can install the MLX runtime for enhanced performance:
|
||||
|
||||
```bash
|
||||
# Using uv (recommended)
|
||||
uv pip install mlx-lm
|
||||
|
||||
# Or using pip
|
||||
pip install mlx-lm
|
||||
```
|
||||
|
||||
:::note
|
||||
The MLX runtime is specifically designed for Apple Silicon Macs and provides optimized AI model inference. To use MLX, you'll need to run RamaLama with the `--nocontainer` option.
|
||||
:::
|
||||
|
||||
## Verify Installation
|
||||
|
||||
After installation, verify that RamaLama is working correctly:
|
||||
|
||||
```bash
|
||||
ramalama version
|
||||
```
|
||||
|
||||
You should see output similar to:
|
||||
```
|
||||
ramalama version 0.11.1
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
Once RamaLama is installed, you can:
|
||||
|
||||
1. **Pull your first model**: `ramalama pull ollama://tinyllama`
|
||||
2. **Run a model**: `ramalama run ollama://tinyllama`
|
||||
3. **Explore available commands**: `ramalama --help`
|
||||
|
||||
For detailed usage instructions, see the [Commands](../commands/ramalama/ramalama) section.
|
||||
|
||||
## Platform-Specific Setup
|
||||
|
||||
After installation, you may need additional platform-specific configuration:
|
||||
|
||||
- **NVIDIA GPUs**: See [CUDA Setup](../platform-guides/cuda)
|
||||
- **macOS**: See [macOS Setup](../platform-guides/macos)
|
||||
- **Ascend NPUs**: See [CANN Setup](../platform-guides/cann)
|
||||
34
docsite/docs/introduction.mdx
Normal file
34
docsite/docs/introduction.mdx
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: RamaLama strives to make working with AI simple, straightforward, and familiar by using OCI containers.
|
||||
sidebar_position: 0
|
||||
---
|
||||
|
||||
<div style={{textAlign: "center"}}>
|
||||
<img src="https://github.com/user-attachments/assets/1a338ecf-dc84-4495-8c70-16882955da47" style={{width: "50%"}} />
|
||||
</div>
|
||||
|
||||
[RamaLama](https://ramalama.ai) strives to make working with AI simple, straightforward, and familiar by using OCI containers.
|
||||
|
||||
## Description
|
||||
RamaLama is an open-source tool that simplifies the local use and serving of AI models for inference from any source through the familiar approach of containers. It allows engineers to use container-centric development patterns and benefits to extend to AI use cases.
|
||||
|
||||
RamaLama eliminates the need to configure the host system by instead pulling a container image specific to the GPUs discovered on the host system, and allowing you to work with various models and platforms.
|
||||
|
||||
- Eliminates the complexity for users to configure the host system for AI.
|
||||
- Detects and pulls an accelerated container image specific to the GPUs on the host system, handling dependencies and hardware optimization.
|
||||
- RamaLama supports multiple AI model registries, including OCI Container Registries.
|
||||
- Models are treated similarly to how Podman and Docker treat container images.
|
||||
- Use common container commands to work with AI models.
|
||||
- Run AI models securely in rootless containers, isolating the model from the underlying host.
|
||||
- Keep data secure by defaulting to no network access and removing all temporary data on application exits.
|
||||
- Interact with models via REST API or as a chatbot.
|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||
Open to contributors
|
||||
|
||||
<a href="https://github.com/containers/ramalama/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=containers/ramalama" />
|
||||
</a>
|
||||
9
docsite/docs/platform-guides/_category_.json
Normal file
9
docsite/docs/platform-guides/_category_.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"label": "Platform Guides",
|
||||
"position": 3,
|
||||
"collapsed": true,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Platform-specific setup guides for RamaLama."
|
||||
}
|
||||
}
|
||||
78
docsite/docs/platform-guides/cann.mdx
Normal file
78
docsite/docs/platform-guides/cann.mdx
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: ramalama cann.7
|
||||
description: Platform-specific setup guide
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-cann.7.md
|
||||
---
|
||||
|
||||
# ramalama cann.7
|
||||
|
||||
# Setting Up RamaLama with Ascend NPU Support on Linux systems
|
||||
|
||||
This guide walks through the steps required to set up RamaLama with Ascend NPU support.
|
||||
- [Background](#background)
|
||||
- [Hardware](#hardware)
|
||||
- [Model](#model)
|
||||
- [Docker](#docker)
|
||||
- [HISTORY](#todo)
|
||||
|
||||
## Background
|
||||
|
||||
**Ascend NPU** is a range of AI processors using Neural Processing Unit. It will efficiently handle matrix-matrix multiplication, dot-product and scalars.
|
||||
|
||||
**CANN** (Compute Architecture for Neural Networks) is a heterogeneous computing architecture for AI scenarios, providing support for multiple AI frameworks on the top and serving AI processors and programming at the bottom. It plays a crucial role in bridging the gap between upper and lower layers, and is a key platform for improving the computing efficiency of Ascend AI processors. Meanwhile, it offers a highly efficient and easy-to-use programming interface for diverse application scenarios, allowing users to rapidly build AI applications and services based on the Ascend platform.
|
||||
|
||||
## Hardware
|
||||
|
||||
### Ascend NPU
|
||||
|
||||
**Verified devices**
|
||||
|
||||
Table Supported Hardware List:
|
||||
| Ascend NPU | Status |
|
||||
| ----------------------------- | ------- |
|
||||
| Atlas A2 Training series | Support |
|
||||
| Atlas 800I A2 Inference series | Support |
|
||||
|
||||
*Notes:*
|
||||
|
||||
- If you have trouble with Ascend NPU device, please create an issue with **[CANN]** prefix/tag.
|
||||
- If you are running successfully with an Ascend NPU device, please help update the "Supported Hardware List" table above.
|
||||
|
||||
## Model
|
||||
Currently, Ascend NPU acceleration is only supported when the llama.cpp backend is selected. For supported models, please refer to the page [llama.cpp/backend/CANN.md](https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/CANN.md).
|
||||
|
||||
## Docker
|
||||
### Install the Ascend driver
|
||||
This provides NPU acceleration using the AI cores of your Ascend NPU. And [CANN](https://www.hiascend.com/en/software/cann) is a hierarchical APIs to help you to quickly build AI applications and service based on Ascend NPU.
|
||||
|
||||
For more information about Ascend NPU in [Ascend Community](https://www.hiascend.com/en/).
|
||||
|
||||
Make sure to have the CANN toolkit installed. You can download it from here: [CANN Toolkit](https://www.hiascend.com/developer/download/community/result?module=cann)
|
||||
Make sure the Ascend Docker runtime is installed. You can download it from here: [Ascend-docker-runtime](https://www.hiascend.com/document/detail/en/mindx-dl/300/dluserguide/clusterscheduling/dlug_installation_02_000025.html)
|
||||
|
||||
### Build Images
|
||||
Go to `ramalama` directory and build using make.
|
||||
```bash
|
||||
make build IMAGE=cann
|
||||
make install
|
||||
```
|
||||
|
||||
You can test with:
|
||||
```bash
|
||||
export ASCEND_VISIBLE_DEVICES=0
|
||||
ramalama --image quay.io/ramalama/cann:latest serve -d -p 8080 -name ollama://smollm:135m
|
||||
```
|
||||
|
||||
In a window see the running podman container.
|
||||
```bash
|
||||
$ podman ps
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
80fc31c131b0 quay.io/ramalama/cann:latest "/bin/bash -c 'expor…" About an hour ago Up About an hour ame
|
||||
```
|
||||
|
||||
Other using guides see RamaLama ([README.md](https://github.com/containers/ramalama/blob/main/README.md))
|
||||
|
||||
---
|
||||
|
||||
*Mar 2025, Originally compiled*
|
||||
193
docsite/docs/platform-guides/cuda.mdx
Normal file
193
docsite/docs/platform-guides/cuda.mdx
Normal file
@@ -0,0 +1,193 @@
|
||||
---
|
||||
title: ramalama cuda.7
|
||||
description: Platform-specific setup guide
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-cuda.7.md
|
||||
---
|
||||
|
||||
# ramalama cuda.7
|
||||
|
||||
# Setting Up RamaLama with CUDA Support on Linux systems
|
||||
|
||||
This guide walks through the steps required to set up RamaLama with CUDA support.
|
||||
|
||||
## Install the NVIDIA Container Toolkit
|
||||
|
||||
Follow the installation instructions provided in the [NVIDIA Container Toolkit installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html).
|
||||
|
||||
### Installation using dnf/yum (For RPM based distros like Fedora)
|
||||
|
||||
* Install the NVIDIA Container Toolkit packages
|
||||
|
||||
```bash
|
||||
sudo dnf install -y nvidia-container-toolkit
|
||||
```
|
||||
|
||||
:::note
|
||||
The NVIDIA Container Toolkit is required on the host for running CUDA in containers.
|
||||
:::
|
||||
:::note
|
||||
If the above installation is not working for you and you are running Fedora, try removing it and using the [COPR](https://copr.fedorainfracloud.org/coprs/g/ai-ml/nvidia-container-toolkit/).
|
||||
:::
|
||||
|
||||
### Installation using APT (For Debian based distros like Ubuntu)
|
||||
|
||||
* Configure the Production Repository
|
||||
|
||||
```bash
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
|
||||
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
|
||||
|
||||
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
|
||||
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
||||
```
|
||||
|
||||
* Update the packages list from the repository
|
||||
|
||||
```bash
|
||||
sudo apt-get update
|
||||
```
|
||||
|
||||
* Install the NVIDIA Container Toolkit packages
|
||||
|
||||
```bash
|
||||
sudo apt-get install -y nvidia-container-toolkit
|
||||
```
|
||||
|
||||
:::note
|
||||
The NVIDIA Container Toolkit is required for WSL to have CUDA resources while running a container.
|
||||
:::
|
||||
|
||||
## Setting Up CUDA Support
|
||||
|
||||
For additional information see: [Support for Container Device Interface](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/cdi-support.html)
|
||||
|
||||
# Generate the CDI specification file
|
||||
|
||||
```bash
|
||||
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
|
||||
```
|
||||
|
||||
# Check the names of the generated devices
|
||||
|
||||
Open and edit the NVIDIA container runtime configuration:
|
||||
|
||||
```bash
|
||||
nvidia-ctk cdi list
|
||||
INFO[0000] Found 1 CDI devices
|
||||
nvidia.com/gpu=all
|
||||
```
|
||||
|
||||
:::note
|
||||
Generate a new CDI specification after any configuration change most notably when the driver is upgraded!
|
||||
:::
|
||||
|
||||
## Testing the Setup
|
||||
|
||||
**Based on this Documentation:** [Running a Sample Workload](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/sample-workload.html)
|
||||
|
||||
---
|
||||
|
||||
# **Test the Installation**
|
||||
|
||||
Run the following command to verify setup:
|
||||
|
||||
```bash
|
||||
podman run --rm --device=nvidia.com/gpu=all fedora nvidia-smi
|
||||
```
|
||||
|
||||
# **Expected Output**
|
||||
|
||||
Verify everything is configured correctly, with output similar to this:
|
||||
|
||||
```text
|
||||
Thu Dec 5 19:58:40 2024
|
||||
+-----------------------------------------------------------------------------------------+
|
||||
| NVIDIA-SMI 565.72 Driver Version: 566.14 CUDA Version: 12.7 |
|
||||
|-----------------------------------------+------------------------+----------------------+
|
||||
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
|
||||
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
|
||||
| | | MIG M. |
|
||||
|=========================================+========================+======================|
|
||||
| 0 NVIDIA GeForce RTX 3080 On | 00000000:09:00.0 On | N/A |
|
||||
| 34% 24C P5 31W / 380W | 867MiB / 10240MiB | 7% Default |
|
||||
| | | N/A |
|
||||
+-----------------------------------------+------------------------+----------------------+
|
||||
|
||||
+-----------------------------------------------------------------------------------------+
|
||||
| Processes: |
|
||||
| GPU GI CI PID Type Process name GPU Memory |
|
||||
| ID ID Usage |
|
||||
|=========================================================================================|
|
||||
| 0 N/A N/A 35 G /Xwayland N/A |
|
||||
| 0 N/A N/A 35 G /Xwayland N/A |
|
||||
+-----------------------------------------------------------------------------------------+
|
||||
```
|
||||
|
||||
:::note
|
||||
On systems that have SELinux enabled, it may be necessary to turn on the `container_use_devices` boolean in order to run the `nvidia-smi` command successfully from a container.
|
||||
:::
|
||||
|
||||
To check the status of the boolean, run the following:
|
||||
|
||||
```bash
|
||||
getsebool container_use_devices
|
||||
```
|
||||
|
||||
If the result of the command shows that the boolean is `off`, run the following to turn the boolean on:
|
||||
|
||||
```bash
|
||||
sudo setsebool -P container_use_devices 1
|
||||
```
|
||||
|
||||
### CUDA_VISIBLE_DEVICES
|
||||
|
||||
RamaLama respects the `CUDA_VISIBLE_DEVICES` environment variable if it's already set in your environment. If not set, RamaLama will default to using all the GPU detected by nvidia-smi.
|
||||
|
||||
You can specify which GPU devices should be visible to RamaLama by setting this variable before running RamaLama commands:
|
||||
|
||||
```bash
|
||||
export CUDA_VISIBLE_DEVICES="0,1" # Use GPUs 0 and 1
|
||||
ramalama run granite
|
||||
```
|
||||
|
||||
This is particularly useful in multi-GPU systems where you want to dedicate specific GPUs to different workloads.
|
||||
|
||||
If the `CUDA_VISIBLE_DEVICES` environment variable is set to an empty string, RamaLama will default to using the CPU.
|
||||
|
||||
```bash
|
||||
export CUDA_VISIBLE_DEVICES="" # Defaults to CPU
|
||||
ramalama run granite
|
||||
```
|
||||
|
||||
To revert to using all available GPUs, unset the environment variable:
|
||||
|
||||
```bash
|
||||
unset CUDA_VISIBLE_DEVICES
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### CUDA Updates
|
||||
|
||||
On some CUDA software updates, RamaLama stops working complaining about missing shared NVIDIA libraries for example:
|
||||
|
||||
```bash
|
||||
ramalama run granite
|
||||
Error: crun: cannot stat `/lib64/libEGL_nvidia.so.565.77`: No such file or directory: OCI runtime attempted to invoke a command that was not found
|
||||
```
|
||||
|
||||
Because the CUDA version is updated, the CDI specification file needs to be recreated.
|
||||
|
||||
```bash
|
||||
sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
[ramalama(1)](../commands/ramalama/ramalama), [podman(1)](https://github.com/containers/podman/blob/main/docs/source/markdown/podman.1.md)
|
||||
|
||||
---
|
||||
|
||||
*Jan 2025, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
67
docsite/docs/platform-guides/macos.mdx
Normal file
67
docsite/docs/platform-guides/macos.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: ramalama macos.7
|
||||
description: Platform-specific setup guide
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-macos.7.md
|
||||
---
|
||||
|
||||
# ramalama macos.7
|
||||
|
||||
# Configure Podman Machine on Mac for GPU Acceleration
|
||||
|
||||
Leveraging GPU acceleration on a Mac with Podman requires the configuration of
|
||||
the `libkrun` machine provider.
|
||||
|
||||
This can be done by either setting an environment variable or modifying the
|
||||
`containers.conf` file. On MacOS, you'll likely need to create a new Podman
|
||||
machine with libkrun to access the GPU.
|
||||
|
||||
Previously created Podman Machines must be recreated to take
|
||||
advantage of the `libkrun` provider.
|
||||
|
||||
## Configuration Methods:
|
||||
|
||||
### containers.conf
|
||||
|
||||
Open the containers.conf file, typically located at $HOME/.config/containers/containers.conf.
|
||||
|
||||
Add the following line within the [machine] section: provider = "libkrun".
|
||||
This change will persist across sessions.
|
||||
|
||||
### Environment Variable
|
||||
Set the CONTAINERS_MACHINE_PROVIDER environment variable to libkrun. This will be a temporary change until you restart your terminal or session.
|
||||
|
||||
For example: export CONTAINERS_MACHINE_PROVIDER=libkrun
|
||||
|
||||
### ramalama.conf
|
||||
|
||||
RamaLama can also be run in a limited manner without using Containers, by
|
||||
specifying the --nocontainer option. Open the ramalama.conf file, typically located at $HOME/.config/ramalama/ramalama.conf.
|
||||
|
||||
Add the following line within the [machine] section: `container = false`
|
||||
This change will persist across sessions.
|
||||
|
||||
## Podman Desktop
|
||||
|
||||
Creating a Podman Machine with libkrun (MacOS):
|
||||
|
||||
Go to Settings > Resources in Podman Desktop.
|
||||
|
||||
In the Podman tile, click Create new.
|
||||
In the Create a Podman machine screen, you can configure the machine's resources (CPU, Memory, Disk size) and enable Machine with root privileges if needed.
|
||||
To use libkrun, ensure that the environment variable is set or the containers.conf file is configured before creating the machine.
|
||||
Once the machine is created, Podman Desktop will manage the connection to the new machine.
|
||||
|
||||
## Important Notes:
|
||||
|
||||
On MacOS, `libkrun` is used to leverage the system's virtualization framework for running containers, and it requires a Podman machine to be created.
|
||||
|
||||
Refer to the [Podman Desktop documentation](https://podman-desktop.io/docs/podman/creating-a-podman-machine) for detailed instructions and troubleshooting tips.
|
||||
|
||||
## See Also
|
||||
|
||||
[ramalama(1)](../commands/ramalama/ramalama), [podman-machine(1)](https://github.com/containers/podman/blob/main/docs/source/markdown/podman-machine.1.md)
|
||||
|
||||
---
|
||||
|
||||
*Apr 2025, Originally compiled by Dan Walsh <dwalsh@redhat.com>*
|
||||
83
docsite/docs/platform-guides/musa.mdx
Normal file
83
docsite/docs/platform-guides/musa.mdx
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
title: ramalama musa.7
|
||||
description: Platform-specific setup guide
|
||||
# This file is auto-generated from manpages. Do not edit manually.
|
||||
# Source: ramalama-musa.7.md
|
||||
---
|
||||
|
||||
# ramalama musa.7
|
||||
|
||||
# Setting Up RamaLama with MUSA Support on Linux systems
|
||||
|
||||
This guide walks through the steps required to set up RamaLama with MUSA support.
|
||||
|
||||
## Install the MT Linux Driver
|
||||
|
||||
Download the appropriate [MUSA SDK](https://developer.mthreads.com/sdk/download/musa) and follow the installation instructions provided in the [MT Linux Driver installation guide](https://docs.mthreads.com/musa-sdk/musa-sdk-doc-online/install_guide#2%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85).
|
||||
|
||||
## Install the MT Container Toolkit
|
||||
|
||||
Obtain the latest [MT CloudNative Toolkits](https://developer.mthreads.com/sdk/download/CloudNative) and follow the installation instructions provided in the [MT Container Toolkit installation guide](https://docs.mthreads.com/cloud-native/cloud-native-doc-online/install_guide/#%E6%91%A9%E5%B0%94%E7%BA%BF%E7%A8%8B%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E5%A5%97%E4%BB%B6).
|
||||
|
||||
## Setting Up MUSA Support
|
||||
|
||||
```bash
|
||||
$ (cd /usr/bin/musa && sudo ./docker setup $PWD)
|
||||
$ docker info | grep mthreads
|
||||
Runtimes: mthreads mthreads-experimental runc
|
||||
Default Runtime: mthreads
|
||||
```
|
||||
|
||||
## Testing the Setup
|
||||
|
||||
# **Test the Installation**
|
||||
|
||||
Run the following command to verify setup:
|
||||
|
||||
```bash
|
||||
docker run --rm --env MTHREADS_VISIBLE_DEVICES=all ubuntu:22.04 mthreads-gmi
|
||||
```
|
||||
|
||||
# **Expected Output**
|
||||
|
||||
Verify everything is configured correctly, with output similar to this:
|
||||
|
||||
```text
|
||||
Thu May 15 01:53:39 2025
|
||||
---------------------------------------------------------------
|
||||
mthreads-gmi:2.0.0 Driver Version:3.0.0
|
||||
---------------------------------------------------------------
|
||||
ID Name |PCIe |%GPU Mem
|
||||
Device Type |Pcie Lane Width |Temp MPC Capable
|
||||
| ECC Mode
|
||||
+-------------------------------------------------------------+
|
||||
0 MTT S80 |00000000:01:00.0 |0% 3419MiB(16384MiB)
|
||||
Physical |16x(16x) |59C YES
|
||||
| N/A
|
||||
---------------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------------
|
||||
Processes:
|
||||
ID PID Process name GPU Memory
|
||||
Usage
|
||||
+-------------------------------------------------------------+
|
||||
No running processes found
|
||||
---------------------------------------------------------------
|
||||
```
|
||||
|
||||
### MUSA_VISIBLE_DEVICES
|
||||
|
||||
RamaLama respects the `MUSA_VISIBLE_DEVICES` environment variable if it's already set in your environment. If not set, RamaLama will default to using all the GPU detected by mthreads-gmi.
|
||||
|
||||
You can specify which GPU devices should be visible to RamaLama by setting this variable before running RamaLama commands:
|
||||
|
||||
```bash
|
||||
export MUSA_VISIBLE_DEVICES="0,1" # Use GPUs 0 and 1
|
||||
ramalama run granite
|
||||
```
|
||||
|
||||
This is particularly useful in multi-GPU systems where you want to dedicate specific GPUs to different workloads.
|
||||
|
||||
---
|
||||
|
||||
*May 2025, Originally compiled by Xiaodong Ye <yeahdongcn@gmail.com>*
|
||||
152
docsite/docusaurus.config.ts
Normal file
152
docsite/docusaurus.config.ts
Normal file
@@ -0,0 +1,152 @@
|
||||
import {themes as prismThemes} from 'prism-react-renderer';
|
||||
import type {Config} from '@docusaurus/types';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
|
||||
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
|
||||
|
||||
const config: Config = {
|
||||
title: 'RamaLama',
|
||||
tagline: 'Working with AI made simple, straightforward, and familiar',
|
||||
favicon: 'img/favicon.png',
|
||||
|
||||
// Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
|
||||
future: {
|
||||
v4: true, // Improve compatibility with the upcoming Docusaurus v4
|
||||
},
|
||||
|
||||
// Set the production url of your site here
|
||||
url: 'https://ramalama.ai',
|
||||
// Set the /<baseUrl>/ pathname under which your site is served
|
||||
// For GitHub pages deployment, it is often '/<projectName>/'
|
||||
baseUrl: '/',
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: 'containers', // Usually your GitHub org/user name.
|
||||
projectName: 'ramalama', // Usually your repo name.
|
||||
|
||||
onBrokenLinks: 'throw',
|
||||
onBrokenMarkdownLinks: 'warn',
|
||||
|
||||
// Even if you don't use internationalization, you can use this field to set
|
||||
// useful metadata like html lang. For example, if your site is Chinese, you
|
||||
// may want to replace "en" with "zh-Hans".
|
||||
i18n: {
|
||||
defaultLocale: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
{
|
||||
docs: {
|
||||
sidebarPath: './sidebars.ts',
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl: ({ docPath }) =>
|
||||
`https://github.com/containers/ramalama/edit/main/docsite/${docPath}`,
|
||||
},
|
||||
theme: {
|
||||
customCss: './src/css/custom.css',
|
||||
},
|
||||
} satisfies Preset.Options,
|
||||
],
|
||||
],
|
||||
|
||||
plugins: [
|
||||
|
||||
],
|
||||
|
||||
themeConfig: {
|
||||
// Replace with your project's social card
|
||||
image: 'img/logo.svg',
|
||||
navbar: {
|
||||
title: 'RamaLama',
|
||||
logo: {
|
||||
alt: 'RamaLama Logo',
|
||||
src: 'img/logo.svg',
|
||||
srcDark: 'img/logo.svg',
|
||||
width: 40,
|
||||
height: 40,
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'docs',
|
||||
position: 'left',
|
||||
label: 'Docs',
|
||||
},
|
||||
{
|
||||
href: 'https://blog.ramalama.com',
|
||||
label: 'Blog',
|
||||
position: 'left',
|
||||
},
|
||||
{
|
||||
href: 'https://github.com/containers/ramalama',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Getting Started',
|
||||
to: '/docs/getting-started',
|
||||
},
|
||||
{
|
||||
label: 'API References',
|
||||
to: '/docs/commands/ramalama/',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Issues',
|
||||
href: 'https://github.com/containers/ramalama/issues',
|
||||
},
|
||||
{
|
||||
label: 'Matrix',
|
||||
href: 'https://matrix.to/#/#ramalama:fedoraproject.org',
|
||||
},
|
||||
{
|
||||
label: 'Discord',
|
||||
href: 'https://discord.gg/MkCXuTRBUn',
|
||||
},
|
||||
{
|
||||
label: 'X',
|
||||
href: 'https://x.com/RamaLamaLabs',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
href: 'https://blog.ramalama.com',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/containers/ramalama',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Copyright © ${new Date().getFullYear()} RamaLama Contributors.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
} satisfies Preset.ThemeConfig,
|
||||
};
|
||||
|
||||
export default config;
|
||||
17499
docsite/package-lock.json
generated
Normal file
17499
docsite/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
48
docsite/package.json
Normal file
48
docsite/package.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "docsite",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
"start": "docusaurus start",
|
||||
"build": "docusaurus build",
|
||||
"swizzle": "docusaurus swizzle",
|
||||
"deploy": "docusaurus deploy",
|
||||
"clear": "docusaurus clear",
|
||||
"serve": "docusaurus serve",
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids",
|
||||
"typecheck": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.8.1",
|
||||
"@docusaurus/plugin-client-redirects": "^3.8.1",
|
||||
"@docusaurus/preset-classic": "3.8.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "3.8.1",
|
||||
"@docusaurus/tsconfig": "3.8.1",
|
||||
"@docusaurus/types": "3.8.1",
|
||||
"typescript": "~5.6.2"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.5%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 3 chrome version",
|
||||
"last 3 firefox version",
|
||||
"last 5 safari version"
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0"
|
||||
}
|
||||
}
|
||||
12
docsite/sidebars.ts
Normal file
12
docsite/sidebars.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
|
||||
|
||||
const sidebars: SidebarsConfig = {
|
||||
docs: [
|
||||
{
|
||||
type: 'autogenerated',
|
||||
dirName: '.',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default sidebars;
|
||||
101
docsite/src/components/HomepageFeatures/index.tsx
Normal file
101
docsite/src/components/HomepageFeatures/index.tsx
Normal file
@@ -0,0 +1,101 @@
|
||||
import type {ReactNode} from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './styles.module.css';
|
||||
|
||||
type FeatureItem = {
|
||||
title: string;
|
||||
description: ReactNode;
|
||||
icon: string;
|
||||
};
|
||||
|
||||
const FeatureList: FeatureItem[] = [
|
||||
{
|
||||
title: 'Multiple Model Support',
|
||||
icon: '🤖',
|
||||
description: (
|
||||
<>
|
||||
Run models from HuggingFace, ModelScope, Ollama, and OCI registries.
|
||||
Supports popular formats like GGUF and more.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'REST API & Chat Interface',
|
||||
icon: '💬',
|
||||
description: (
|
||||
<>
|
||||
Interact with models through a REST API or use the built-in chat interface.
|
||||
Perfect for both application development and direct interaction.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'RAG Support',
|
||||
icon: '📚',
|
||||
description: (
|
||||
<>
|
||||
Built-in support for Retrieval Augmented Generation (RAG). Convert your documents
|
||||
into vector databases and enhance model responses with your data.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Cross-Platform',
|
||||
icon: '🖥️',
|
||||
description: (
|
||||
<>
|
||||
Works on Linux, macOS, and Windows (via WSL2). Supports both Podman and Docker
|
||||
as container engines.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Performance Benchmarking',
|
||||
icon: '📊',
|
||||
description: (
|
||||
<>
|
||||
Built-in tools to benchmark and measure model performance. Calculate perplexity
|
||||
and compare different models.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Active Community',
|
||||
icon: '👥',
|
||||
description: (
|
||||
<>
|
||||
Join our active Matrix community for support and discussions. Open source and
|
||||
welcoming contributions.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({title, description, icon}: FeatureItem) {
|
||||
return (
|
||||
<div className={clsx('col col--4')}>
|
||||
<div className="text--center">
|
||||
<span className={styles.featureIcon}>{icon}</span>
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<Heading as="h3">{title}</Heading>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function HomepageFeatures(): ReactNode {
|
||||
return (
|
||||
<section className={styles.features}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
{FeatureList.map((props, idx) => (
|
||||
<Feature key={idx} {...props} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
39
docsite/src/components/HomepageFeatures/styles.module.css
Normal file
39
docsite/src/components/HomepageFeatures/styles.module.css
Normal file
@@ -0,0 +1,39 @@
|
||||
.features {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 4rem 0;
|
||||
width: 100%;
|
||||
background: linear-gradient(135deg, #cf3c23 0%, #e64c32 100%);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.featureIcon {
|
||||
font-size: 2.5rem;
|
||||
padding: 1.25rem;
|
||||
margin-bottom: 1.5rem;
|
||||
display: inline-block;
|
||||
background: rgba(254, 237, 193, 0.1);
|
||||
border-radius: 16px;
|
||||
backdrop-filter: blur(10px);
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
border: 1px solid rgba(254, 237, 193, 0.2);
|
||||
transition: transform 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.featureIcon:hover {
|
||||
transform: scale(1.05);
|
||||
background: rgba(254, 237, 193, 0.15);
|
||||
}
|
||||
|
||||
.features h3 {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #feedc1;
|
||||
}
|
||||
|
||||
.features p {
|
||||
font-size: 1rem;
|
||||
line-height: 1.6;
|
||||
color: rgba(254, 237, 193, 0.9);
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
30
docsite/src/css/custom.css
Normal file
30
docsite/src/css/custom.css
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Any CSS included here will be global. The classic template
|
||||
* bundles Infima by default. Infima is a CSS framework designed to
|
||||
* work well for content-centric websites.
|
||||
*/
|
||||
|
||||
/* You can override the default Infima variables here. */
|
||||
:root {
|
||||
--ifm-color-primary: #2e8555;
|
||||
--ifm-color-primary-dark: #29784c;
|
||||
--ifm-color-primary-darker: #277148;
|
||||
--ifm-color-primary-darkest: #205d3b;
|
||||
--ifm-color-primary-light: #33925d;
|
||||
--ifm-color-primary-lighter: #359962;
|
||||
--ifm-color-primary-lightest: #3cad6e;
|
||||
--ifm-code-font-size: 95%;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
/* For readability concerns, you should choose a lighter palette in dark mode. */
|
||||
[data-theme='dark'] {
|
||||
--ifm-color-primary: #25c2a0;
|
||||
--ifm-color-primary-dark: #21af90;
|
||||
--ifm-color-primary-darker: #1fa588;
|
||||
--ifm-color-primary-darkest: #1a8870;
|
||||
--ifm-color-primary-light: #29d5b0;
|
||||
--ifm-color-primary-lighter: #32d8b4;
|
||||
--ifm-color-primary-lightest: #4fddbf;
|
||||
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
110
docsite/src/pages/index.module.css
Normal file
110
docsite/src/pages/index.module.css
Normal file
@@ -0,0 +1,110 @@
|
||||
/**
|
||||
* CSS files with the .module.css suffix will be treated as CSS modules
|
||||
* and scoped locally.
|
||||
*/
|
||||
|
||||
.heroBanner {
|
||||
padding: 4rem 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: linear-gradient(135deg, #1f3156 0%, #2a3c61 100%);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.heroLogo {
|
||||
width: 400px;
|
||||
max-width: 90%;
|
||||
height: auto;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 996px) {
|
||||
.heroBanner {
|
||||
padding: 2rem;
|
||||
}
|
||||
.heroLogo {
|
||||
width: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 1rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.buttons :global(.button--outline) {
|
||||
background-color: white;
|
||||
border-color: white;
|
||||
color: #1f3156;
|
||||
}
|
||||
|
||||
.buttons :global(.button--outline:hover) {
|
||||
background-color: #feedc1;
|
||||
border-color: #feedc1;
|
||||
color: #1f3156;
|
||||
}
|
||||
|
||||
.highlights {
|
||||
padding: 4rem 0;
|
||||
background: linear-gradient(135deg, #feedc1 0%, #fff6e5 100%);
|
||||
}
|
||||
|
||||
.highlights h3 {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.5rem;
|
||||
color: #cf3c23;
|
||||
}
|
||||
|
||||
.highlights p {
|
||||
font-size: 1rem;
|
||||
line-height: 1.6;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.quickstart {
|
||||
padding: 4rem 0;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.quickstart h2 {
|
||||
color: #cf3c23;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.quickstart pre {
|
||||
margin-top: 1.5rem;
|
||||
border-radius: 8px;
|
||||
padding: 1.5rem;
|
||||
background-color: #1f3156;
|
||||
color: #feedc1;
|
||||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
.quickstart code {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.quickstart ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
.quickstart li {
|
||||
padding: 0.75rem 0;
|
||||
font-size: 1.1rem;
|
||||
color: #4c4c4c;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.quickstart li:before {
|
||||
content: "✓";
|
||||
margin-right: 0.75rem;
|
||||
color: #cf3c23;
|
||||
font-weight: bold;
|
||||
}
|
||||
122
docsite/src/pages/index.tsx
Normal file
122
docsite/src/pages/index.tsx
Normal file
@@ -0,0 +1,122 @@
|
||||
import type {ReactNode} from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import Layout from '@theme/Layout';
|
||||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||||
import Heading from '@theme/Heading';
|
||||
|
||||
import styles from './index.module.css';
|
||||
|
||||
function HomepageHeader() {
|
||||
const {siteConfig} = useDocusaurusContext();
|
||||
return (
|
||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<img
|
||||
src="/img/ramalama-logo-full-horiz.svg"
|
||||
alt="RamaLama Logo"
|
||||
className={styles.heroLogo}
|
||||
/>
|
||||
<p className="hero__subtitle">
|
||||
Run AI models locally with the simplicity of containers
|
||||
</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
className="button button--secondary button--lg"
|
||||
to="/docs/getting-started/installation">
|
||||
Get Started →
|
||||
</Link>
|
||||
<Link
|
||||
className="button button--outline button--secondary button--lg"
|
||||
href="https://matrix.to/#/#ramalama:fedoraproject.org">
|
||||
Join Community
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
function HomepageHighlights() {
|
||||
return (
|
||||
<section className={styles.highlights}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
<div className="col col--4">
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>Simple & Familiar</h3>
|
||||
<p>
|
||||
Use familiar container commands to work with AI models. Pull, run, and serve models just like you would with Docker or Podman.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col col--4">
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>Hardware Optimized</h3>
|
||||
<p>
|
||||
Automatically detects your GPU and pulls optimized container images for NVIDIA, AMD, Intel, Apple Silicon and more.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col col--4">
|
||||
<div className="text--center padding-horiz--md">
|
||||
<h3>Secure by Default</h3>
|
||||
<p>
|
||||
Run models in rootless containers with read-only mounts, network isolation, and automatic cleanup of temporary data.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function QuickStart() {
|
||||
return (
|
||||
<section className={styles.quickstart}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
<div className="col col--6">
|
||||
<Heading as="h2">Quick Start</Heading>
|
||||
<p>Install RamaLama and start running AI models in minutes:</p>
|
||||
<pre>
|
||||
<code>
|
||||
# Install via script (Linux/macOS)<br/>
|
||||
curl -fsSL https://ramalama.ai/install.sh | bash<br/><br/>
|
||||
# Run your first model<br/>
|
||||
ramalama run granite3-moe
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
<div className="col col--6">
|
||||
<Heading as="h2">Supported Registries</Heading>
|
||||
<ul>
|
||||
<li>HuggingFace</li>
|
||||
<li>ModelScope</li>
|
||||
<li>Ollama</li>
|
||||
<li>OCI Container Registries (Quay.io, Docker Hub, etc.)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Home(): ReactNode {
|
||||
const {siteConfig} = useDocusaurusContext();
|
||||
return (
|
||||
<Layout
|
||||
title={`${siteConfig.title} - Run AI Models with Container Simplicity`}
|
||||
description="RamaLama makes working with AI simple and straightforward by using OCI containers. Run models locally with automatic hardware optimization and security by default.">
|
||||
<HomepageHeader />
|
||||
<main>
|
||||
<HomepageHighlights />
|
||||
<QuickStart />
|
||||
<HomepageFeatures />
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
}
|
||||
7
docsite/src/pages/markdown-page.md
Normal file
7
docsite/src/pages/markdown-page.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Markdown page example
|
||||
---
|
||||
|
||||
# Markdown page example
|
||||
|
||||
You don't need React to write simple standalone pages.
|
||||
0
docsite/static/.nojekyll
Normal file
0
docsite/static/.nojekyll
Normal file
BIN
docsite/static/img/favicon.png
Normal file
BIN
docsite/static/img/favicon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
208
docsite/static/img/logo.svg
Normal file
208
docsite/static/img/logo.svg
Normal file
@@ -0,0 +1,208 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="107.74371mm"
|
||||
height="182.8876mm"
|
||||
viewBox="0 0 107.74371 182.8876"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="ramalama-logo-full-vertical-dark.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
inkscape:export-filename="../PNG/ramalama-logo-full-vertical.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.55688492"
|
||||
inkscape:cx="413.01173"
|
||||
inkscape:cy="438.15157"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1095"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1"
|
||||
showguides="true"><inkscape:page
|
||||
x="7.8902798e-07"
|
||||
y="3.814778e-07"
|
||||
width="107.74371"
|
||||
height="182.8876"
|
||||
id="page3"
|
||||
margin="0"
|
||||
bleed="0" /></sodipodi:namedview><defs
|
||||
id="defs1"><linearGradient
|
||||
id="linearGradient2"
|
||||
inkscape:collect="always"><stop
|
||||
style="stop-color:#cf3c23;stop-opacity:1;"
|
||||
offset="0.34546715"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#bfbfbf;stop-opacity:0.50216103;"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
id="linearGradient5"
|
||||
inkscape:collect="always"><stop
|
||||
style="stop-color:#cf3c23;stop-opacity:1;"
|
||||
offset="0.35390222"
|
||||
id="stop5" /><stop
|
||||
style="stop-color:#bfbfbf;stop-opacity:0.5;"
|
||||
offset="1"
|
||||
id="stop6" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2"
|
||||
id="linearGradient45"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(412.80758,2.7018291)"
|
||||
x1="-294.94406"
|
||||
y1="54.965656"
|
||||
x2="-294.95859"
|
||||
y2="65.785133" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5"
|
||||
id="linearGradient46"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(412.80758,2.7018291)"
|
||||
x1="-320.40573"
|
||||
y1="55.995174"
|
||||
x2="-320.32254"
|
||||
y2="65.866501" /></defs><g
|
||||
id="g45"
|
||||
transform="matrix(1.719319,0,0,1.719319,-126.65781,-48.590199)"
|
||||
inkscape:export-filename="../PNG/ramalama-logo-no-text.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"><path
|
||||
d="m 92.182031,28.922936 c -0.06666,-0.0013 -0.132697,0.0047 -0.198002,0.01776 -2.087184,0.421453 -2.615432,8.143838 -1.17991,17.248668 0.281949,1.786079 0.628534,3.546739 1.026188,5.212986 -1.666714,2.277103 -2.63987,5.010078 -2.639901,7.950275 0.0047,3.093032 1.106943,6.102302 3.142933,8.58046 -0.360477,1.189815 -0.551501,2.424549 -0.567418,3.667692 -1.6e-5,3.731907 1.550542,7.096967 4.035489,9.502811 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644715 -0.529167,2.494822 0,0.850107 0.529167,2.494818 0.529167,2.494818 0,0 -0.529167,1.64472 -0.529167,2.49483 10e-7,0.85011 0.529167,2.49482 0.529167,2.49482 v 2.49482 2.49482 2.49482 2.49483 2.49482 2.49482 c 0,2.51743 2.02674,4.54417 4.54418,4.54417 h 9.30884 c 2.51744,0 4.54416,-2.02674 4.54416,-4.54417 v -2.49483 -2.49482 -2.49483 -2.49482 -2.49483 -2.49482 c 0,0 0.52917,-1.64472 0.52917,-2.49483 0,-0.85011 -0.52917,-2.49482 -0.52917,-2.49482 0,0 0.52917,-1.644718 0.52917,-2.494827 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644717 0.52917,-2.494826 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644716 0.52917,-2.494825 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644717 0.52917,-2.494826 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 2.48496,-2.405844 4.0355,-5.770919 4.0355,-9.502826 -8.5e-4,-1.254124 -0.17998,-2.5018 -0.532,-3.705508 2.01486,-2.471756 3.10414,-5.466184 3.10752,-8.542644 -3e-5,-3.044906 -1.04477,-5.866735 -2.8218,-8.190921 0.37713,-1.592843 0.70755,-3.27021 0.9795,-4.97234 1.43572,-9.106154 0.90707,-16.829022 -1.18071,-17.248652 -2.08748,-0.418727 -4.94303,6.621611 -6.37841,15.725879 -0.0723,0.488907 -0.13939,0.977657 -0.20121,1.464835 -1.90571,-0.740376 -4.00347,-1.15091 -6.20698,-1.150941 -2.28788,3.1e-5 -4.46021,0.445374 -6.423469,1.240277 -0.0651,-0.516769 -0.136279,-1.035423 -0.21328,-1.554171 -1.390715,-8.821058 -4.114516,-15.704448 -6.18122,-15.743588 z"
|
||||
style="fill:#feedc1;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path2"
|
||||
sodipodi:nodetypes="cccccccczczczczczccccccsssscccccczczczczczccccccccccccc" /><path
|
||||
id="path3"
|
||||
style="fill:#4c4c4c;stroke-width:0.504377;stroke-linecap:square;stroke-linejoin:round"
|
||||
d="m 130.94058,117.46551 -53.815977,1.738 -2.456018,2.09776 c 0,0 13.541109,11.12284 30.678185,11.31086 17.13708,0.18804 30.18865,-11.37167 30.18865,-11.37167 z" /><path
|
||||
d="m 135.40067,121.39576 -19.13282,-16.68013 1.46402,2.79127 -11.51011,10.00443 -11.073881,-9.65144 0.530398,-4.27378 -21.078929,17.7001"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4" /><path
|
||||
d="m 95.673149,101.4792 -0.223947,2.04167 1.153825,23.56591 9.330523,1.19741 8.56236,-2.05782 0.0549,-24.67512 c 0,0 -0.73305,0.89401 -1.15922,1.29689 -2.12285,2.08807 -4.80983,3.31452 -8.30219,3.27748 -3.62026,0.0152 -5.881517,-0.95256 -8.273357,-3.25243 -0.392181,-0.38159 -0.821931,-0.96288 -1.142934,-1.39399 z"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1.30555;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path6"
|
||||
sodipodi:nodetypes="cccccccccc" /><path
|
||||
style="fill:#b54f3e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;paint-order:markers stroke fill"
|
||||
d="m 105.00001,72.559541 c 0,0 -1.34143,2.697245 -2.4273,2.946668 -1.08587,0.249425 -2.722425,0.355229 -2.722425,0.355229 0,0 0.986375,2.368259 2.695355,2.731609 1.70898,0.363352 4.53721,0.414533 5.1435,0.04323 0.6063,-0.371306 2.05634,-1.320856 2.17321,-1.65993 0.11688,-0.339071 0.23401,-1.062246 0.23401,-1.062246 0,0 -3.72843,-0.753446 -5.09635,-3.185309"
|
||||
id="path15" /><path
|
||||
id="path22"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 105.01325,69.755525 c 0.14703,3.176294 0.7727,4.350084 2.18626,5.387065 1.41356,1.036965 3.68568,0.486149 4.56871,0 0.88302,-0.48615 2.28434,-1.530622 2.28434,-3.293993 m -9.0658,-2.093072 c -0.14702,3.176294 -0.77269,4.350084 -2.18625,5.387065 -1.41357,1.036965 -3.685685,0.486149 -4.56871,0 -0.883025,-0.48615 -2.284345,-1.530622 -2.284345,-3.293993" /><path
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path23"
|
||||
d="m 110.26178,75.907433 a 5.2617737,3.0022512 0 0 1 -2.63089,2.60003 5.2617737,3.0022512 0 0 1 -5.26178,0 5.2617737,3.0022512 0 0 1 -2.630884,-2.60003" /><path
|
||||
style="fill:#1f3156;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.32292, 2.64583;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 93.323451,120.85511 2.396888,6.23167"
|
||||
id="path25" /><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.91639;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect25"
|
||||
width="3.811146"
|
||||
height="7.3996334"
|
||||
x="87.450607"
|
||||
y="65.308456"
|
||||
rx="0.5816257"
|
||||
ry="0.5816257" /><path
|
||||
d="m 103.16279,37.666884 c -6.723984,-0.226971 -8.821557,4.694301 -12.970493,7.237653 -5.109055,0.944234 -4.806314,10.343535 -4.054164,16.445261 0.123196,-3.094324 2.215817,-5.530243 4.762752,-5.54412 0.889504,1.87e-4 1.761408,0.301667 2.517997,0.870643 -0.06339,-0.535973 -0.343921,-1.073924 -0.835428,-1.983239 -1.147421,-2.122851 0.02975,-1.807774 0.73441,-3.748806 0.685039,-1.887236 4.89914,-0.239601 9.930276,0.703106 7.8e-4,2.8e-4 0.002,4.98e-4 0.003,7.79e-4 0.14251,0.02663 0.27818,0.05747 0.422,0.08301 0.6014,0.106531 1.14188,0.162553 1.63874,0.180869 0.47455,-0.01838 0.99076,-0.07445 1.56512,-0.180869 0.26234,-0.04859 0.51191,-0.106843 0.76966,-0.159719 4.64198,-0.951273 8.48383,-2.466071 9.12146,-0.627147 0.67299,1.941015 1.79761,1.625939 0.70153,3.748805 -0.46951,0.909315 -0.7366,1.447266 -0.79705,1.983224 0.72248,-0.568774 1.55505,-0.870254 2.40446,-0.870643 2.43332,0.01246 4.43283,2.449328 4.55056,5.54412 0.71849,-6.101742 1.00714,-15.501028 -3.87331,-16.445245 -4.22224,-2.024466 -5.91766,-7.237669 -12.3903,-7.237669 -1.40045,0 -2.80088,1.5e-5 -4.20133,0 z"
|
||||
style="stroke:#000000;stroke-width:0.432946;stroke-linecap:square;stroke-linejoin:round"
|
||||
id="path28" /><g
|
||||
id="g32"
|
||||
transform="matrix(1.5574727,0,0,1.5574727,-142.21504,-27.891176)"><ellipse
|
||||
style="fill:#cf3c23;fill-opacity:1;stroke:none;stroke-width:0.472496;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse28"
|
||||
cx="150.20351"
|
||||
cy="58.517475"
|
||||
rx="3.2734523"
|
||||
ry="3.235615" /><ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.339659;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse29"
|
||||
cx="150.20351"
|
||||
cy="58.517475"
|
||||
rx="2.3531568"
|
||||
ry="2.3259571" /><path
|
||||
style="fill:#e2c16d;fill-opacity:1;stroke:#000000;stroke-width:0.8494;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path32"
|
||||
d="m 146.43601,57.480972 a 3.7675014,3.8452704 0 0 1 3.7675,-3.84527 3.7675014,3.8452704 0 0 1 3.7675,3.84527 h -3.7675 z" /><ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.145551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse32"
|
||||
cx="148.64229"
|
||||
cy="58.536304"
|
||||
rx="1.0083772"
|
||||
ry="0.99672139" /></g><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.91639;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect32"
|
||||
width="3.811146"
|
||||
height="7.3996334"
|
||||
x="118.76884"
|
||||
y="65.308456"
|
||||
rx="0.5816257"
|
||||
ry="0.5816257" /><path
|
||||
style="fill:#e2c16d;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path33"
|
||||
d="m 111.78869,61.969326 a 5.8677806,5.9889037 0 0 1 5.86778,-5.988903 5.8677806,5.9889037 0 0 1 5.86777,5.988903 h -5.86777 z" /><path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 104.7079,42.293839 c 0,0 1.74678,3.167012 0.0263,6.146847"
|
||||
id="path34" /><path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 109.32481,44.591423 c 0,0 0.68684,1.460614 0.0411,2.279486"
|
||||
id="path35" /><path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 100.4742,44.591423 c 0,0 0.68685,1.460614 0.0411,2.279486"
|
||||
id="path36" /><path
|
||||
d="m 99.038399,125.02486 0.238745,1.52029 0.982886,6.25939 a 12.852294,4.3909262 0 0 0 5.25446,0.40203 12.852294,4.3909262 0 0 0 4.65243,-0.30591 l 0.99787,-6.35551 0.2558,-1.62828 a 12.852294,4.3909262 0 0 0 -5.9061,-0.49247 12.852294,4.3909262 0 0 0 -6.476091,0.60046 z"
|
||||
style="opacity:1;fill:#ffffff;stroke-width:1.67371;stroke-linecap:square"
|
||||
id="path37" /><path
|
||||
d="m 94.53799,55.547596 c -0.73841,0.01574 -1.49107,0.143678 -2.27428,0.242362 -0.97177,0.122442 -2.51938,0.626736 -3.48092,0.875916 -0.88304,0.228833 -4.64397,1.284587 -5.43481,1.927531 -0.6807,0.553397 0.14132,3.073399 0.30075,3.383256 0.48862,0.46508 1.52136,-0.490322 1.52136,0.422196 0,3.650072 3.17581,6.609417 7.09362,6.609416 3.9178,-5e-6 7.09414,-2.959349 7.09414,-6.609416 0,-1.016086 3.45455,-1.878074 5.64217,-1.884639 2.08794,0.0045 5.60983,0.866316 5.64265,1.884639 0.11758,3.648195 3.17581,6.609411 7.09362,6.609416 3.91784,10e-7 7.09414,-2.959322 7.09414,-6.609416 0,-0.912523 1.03223,0.04289 1.52084,-0.422196 0.15944,-0.309859 0.98146,-2.829856 0.30076,-3.383256 -0.79085,-0.642948 -4.55125,-1.698697 -5.43429,-1.927531 -0.96155,-0.249182 -2.50966,-0.753473 -3.48145,-0.875916 -2.08857,-0.263158 -3.95879,-0.733773 -5.92522,1.267106 -0.73196,0.744818 -1.00196,1.850433 -1.10432,3.007052 -0.85483,-1.189994 -3.13741,-1.988885 -5.70663,-1.997294 -2.56895,0.0083 -4.85144,0.806987 -5.70663,1.996777 -0.10239,-1.15643 -0.37299,-2.26183 -1.10484,-3.006535 -1.229,-1.250542 -2.42025,-1.535698 -3.65094,-1.509468 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#feedc1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
id="path38"
|
||||
sodipodi:nodetypes="cssscssscssscsssscccccc" /><path
|
||||
id="path39"
|
||||
style="fill:url(#linearGradient45);fill-opacity:1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 123.28819,63.235036 c -0.18455,2.183777 -2.49006,4.476805 -5.50046,4.476805 -3.0104,0 -5.8126,-2.235842 -5.8126,-4.692554 0,-1.234751 0.17748,-3.601511 1.31349,-4.723274 1.13601,-1.121763 4.45937,-0.909075 7.21766,0.09022 2.75829,0.999299 2.96646,2.665022 2.78191,4.848799 z"
|
||||
sodipodi:nodetypes="zsszzzz" /><path
|
||||
id="path40"
|
||||
style="fill:url(#linearGradient46);fill-opacity:1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 86.62472,63.235036 c 0.18455,2.183777 2.49006,4.476805 5.50046,4.476805 3.0104,0 5.8126,-2.235842 5.8126,-4.692554 0,-1.234751 -0.17748,-3.601511 -1.31349,-4.723274 -1.13601,-1.121763 -4.45937,-0.909075 -7.21766,0.09022 -2.75829,0.999299 -2.96646,2.665022 -2.78191,4.848799 z"
|
||||
sodipodi:nodetypes="zsszzzz" /><path
|
||||
id="path41"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 98.71837,67.395689 h 2.55067 m 7.46195,0 h 2.55067 m -2.55382,0.01246 c 0,0.56393 -0.84714,1.096601 -1.9783,1.378566 -1.13116,0.28198 -2.52483,0.28198 -3.656,0 -1.13116,-0.281965 -1.82799,-0.803064 -1.82799,-1.36701" /><g
|
||||
id="g44"
|
||||
transform="translate(-0.02360198)"><g
|
||||
id="g42"
|
||||
transform="rotate(-24.316399,114.62897,100.27061)"><path
|
||||
id="path42"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 108.77884,121.93278 8.39018,-4.57387 -3.60546,-6.29936 5.72317,0.32815 -5.1098,-10.15494 -6.23838,9.5038 -3.24628,4.9625 -4.08609,6.23372 -4.542358,6.93136 8.628418,-4.70358 z" /><ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse42"
|
||||
cx="113.6947"
|
||||
cy="116.68105"
|
||||
rx="1.1516093"
|
||||
ry="1.1658812" /></g><g
|
||||
id="g43"
|
||||
transform="matrix(-0.91128546,-0.4117752,-0.4117752,0.91128546,241.69608,56.096826)"><path
|
||||
id="path43"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 109.26106,122.15068 8.39018,-4.57387 -3.60546,-6.29936 5.72317,0.32815 -5.1098,-10.15494 -6.23838,9.5038 -3.24628,4.9625 -4.08609,6.23372 -4.542356,6.93136 8.628416,-4.70358 z" /><ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse43"
|
||||
cx="113.6947"
|
||||
cy="116.68105"
|
||||
rx="1.1516093"
|
||||
ry="1.1658812" /></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
381
docsite/static/img/ramalama-logo-full-horiz.svg
Normal file
381
docsite/static/img/ramalama-logo-full-horiz.svg
Normal file
@@ -0,0 +1,381 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="236.43929mm"
|
||||
height="82.411995mm"
|
||||
viewBox="0 0 236.43929 82.411995"
|
||||
version="1.1"
|
||||
id="svg2674"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
sodipodi:docname="ramalama-logo-full-horiz.svg"
|
||||
inkscape:export-filename="/home/duffy/Downloads/Podman Branding/Badge Style Logo/podman-badge-full-vert.png"
|
||||
inkscape:export-xdpi="89.962868"
|
||||
inkscape:export-ydpi="89.962868"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs2668">
|
||||
<inkscape:path-effect
|
||||
is_visible="true"
|
||||
id="path-effect10334"
|
||||
effect="spiro"
|
||||
lpeversion="0" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect10336"
|
||||
is_visible="true"
|
||||
lpeversion="0" />
|
||||
<inkscape:path-effect
|
||||
is_visible="true"
|
||||
id="path-effect9986"
|
||||
effect="spiro"
|
||||
lpeversion="0" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect9984"
|
||||
is_visible="true"
|
||||
lpeversion="0" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect10300"
|
||||
is_visible="true"
|
||||
lpeversion="0" />
|
||||
<inkscape:path-effect
|
||||
is_visible="true"
|
||||
id="path-effect10304"
|
||||
effect="spiro"
|
||||
lpeversion="0" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2"
|
||||
id="linearGradient6"
|
||||
x1="-294.94406"
|
||||
y1="54.965656"
|
||||
x2="-294.95859"
|
||||
y2="65.785133"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(412.80758,2.7018291)" />
|
||||
<linearGradient
|
||||
id="linearGradient2"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
style="stop-color:#cf3c23;stop-opacity:1;"
|
||||
offset="0.34546715"
|
||||
id="stop1" />
|
||||
<stop
|
||||
style="stop-color:#bfbfbf;stop-opacity:0.50216103;"
|
||||
offset="1"
|
||||
id="stop2" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5"
|
||||
id="linearGradient7"
|
||||
x1="-320.40573"
|
||||
y1="55.995174"
|
||||
x2="-320.32254"
|
||||
y2="65.866501"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(412.80758,2.7018291)" />
|
||||
<linearGradient
|
||||
id="linearGradient5"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
style="stop-color:#cf3c23;stop-opacity:1;"
|
||||
offset="0.35390222"
|
||||
id="stop5" />
|
||||
<stop
|
||||
style="stop-color:#bfbfbf;stop-opacity:0.5;"
|
||||
offset="1"
|
||||
id="stop6" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="307.85714"
|
||||
inkscape:cy="194.28571"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="g3222"
|
||||
showgrid="false"
|
||||
fit-margin-top="10"
|
||||
fit-margin-left="10"
|
||||
fit-margin-right="10"
|
||||
fit-margin-bottom="10"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1163"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showguides="false">
|
||||
<sodipodi:guide
|
||||
position="46.869048,72.64823"
|
||||
orientation="0,-1"
|
||||
id="guide1"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="61.013945,9.9999966"
|
||||
orientation="0,-1"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="9.8273811,20.660136"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="226.47049,27.172843"
|
||||
orientation="1,0"
|
||||
id="guide5"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="236.42411,36.535136"
|
||||
orientation="1,0"
|
||||
id="guide6"
|
||||
inkscape:locked="false" />
|
||||
<inkscape:page
|
||||
x="0"
|
||||
y="0"
|
||||
width="236.43929"
|
||||
height="82.411995"
|
||||
id="page6"
|
||||
margin="0 13.233594 0 0"
|
||||
bleed="0" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata2671">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(517.33021,-6.6586254)">
|
||||
<g
|
||||
id="g1208">
|
||||
<g
|
||||
id="g2422">
|
||||
<g
|
||||
id="g3222">
|
||||
<g
|
||||
id="g6"
|
||||
transform="translate(0.11490045,2.1107321)">
|
||||
<g
|
||||
id="g1"
|
||||
transform="translate(45.843474,48.902117)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:37.9182px;line-height:1.25;font-family:sans-serif;fill:#cf3c23;fill-opacity:1;stroke:none;stroke-width:0.947956"
|
||||
x="-503.4278"
|
||||
y="8.8882151"
|
||||
id="text1"
|
||||
inkscape:export-filename="ramalama-logo-full-vertical2.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"><tspan
|
||||
id="tspan1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-family:'Red Hat Display';-inkscape-font-specification:'Red Hat Display Medium';fill:#cf3c23;fill-opacity:1;stroke-width:0.947956"
|
||||
x="-503.4278"
|
||||
y="8.8882151">rama<tspan
|
||||
style="fill:#cf3c23;fill-opacity:1"
|
||||
id="tspan3" /></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:37.9182px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.947956"
|
||||
x="-416.56378"
|
||||
y="8.8882151"
|
||||
id="text5"><tspan
|
||||
id="tspan5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-family:'Red Hat Display';-inkscape-font-specification:'Red Hat Display Medium';fill:#000000;fill-opacity:1;stroke-width:0.947956"
|
||||
x="-416.56378"
|
||||
y="8.8882151">lama</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g2"
|
||||
transform="matrix(0.66269756,0,0,0.66269756,-556.32977,-8.22108)">
|
||||
<path
|
||||
d="m 92.182031,28.922936 c -0.06666,-0.0013 -0.132697,0.0047 -0.198002,0.01776 -2.087184,0.421453 -2.615432,8.143838 -1.17991,17.248668 0.281949,1.786079 0.628534,3.546739 1.026188,5.212986 -1.666714,2.277103 -2.63987,5.010078 -2.639901,7.950275 0.0047,3.093032 1.106943,6.102302 3.142933,8.58046 -0.360477,1.189815 -0.551501,2.424549 -0.567418,3.667692 -1.6e-5,3.731907 1.550542,7.096967 4.035489,9.502811 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644714 -0.529167,2.494822 0,0.850108 0.529167,2.494822 0.529167,2.494822 0,0 -0.529167,1.644715 -0.529167,2.494822 0,0.850107 0.529167,2.494818 0.529167,2.494818 0,0 -0.529167,1.64472 -0.529167,2.49483 10e-7,0.85011 0.529167,2.49482 0.529167,2.49482 v 2.49482 2.49482 2.49482 2.49483 2.49482 2.49482 c 0,2.51743 2.02674,4.54417 4.54418,4.54417 h 9.30884 c 2.51744,0 4.54416,-2.02674 4.54416,-4.54417 v -2.49483 -2.49482 -2.49483 -2.49482 -2.49483 -2.49482 c 0,0 0.52917,-1.64472 0.52917,-2.49483 0,-0.85011 -0.52917,-2.49482 -0.52917,-2.49482 0,0 0.52917,-1.644718 0.52917,-2.494827 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644717 0.52917,-2.494826 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644716 0.52917,-2.494825 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 0,0 0.52917,-1.644717 0.52917,-2.494826 0,-0.850109 -0.52917,-2.494825 -0.52917,-2.494825 2.48496,-2.405844 4.0355,-5.770919 4.0355,-9.502826 -8.5e-4,-1.254124 -0.17998,-2.5018 -0.532,-3.705508 2.01486,-2.471756 3.10414,-5.466184 3.10752,-8.542644 -3e-5,-3.044906 -1.04477,-5.866735 -2.8218,-8.190921 0.37713,-1.592843 0.70755,-3.27021 0.9795,-4.97234 1.43572,-9.106154 0.90707,-16.829022 -1.18071,-17.248652 -2.08748,-0.418727 -4.94303,6.621611 -6.37841,15.725879 -0.0723,0.488907 -0.13939,0.977657 -0.20121,1.464835 -1.90571,-0.740376 -4.00347,-1.15091 -6.20698,-1.150941 -2.28788,3.1e-5 -4.46021,0.445374 -6.423469,1.240277 -0.0651,-0.516769 -0.136279,-1.035423 -0.21328,-1.554171 -1.390715,-8.821058 -4.114516,-15.704448 -6.18122,-15.743588 z"
|
||||
style="fill:#feedc1;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path18"
|
||||
sodipodi:nodetypes="cccccccczczczczczccccccsssscccccczczczczczccccccccccccc" />
|
||||
<path
|
||||
id="path9"
|
||||
style="fill:#4c4c4c;stroke-width:0.504377;stroke-linecap:square;stroke-linejoin:round"
|
||||
d="m 130.94058,117.46551 -53.815977,1.738 -2.456018,2.09776 c 0,0 13.541109,11.12284 30.678185,11.31086 17.13708,0.18804 30.18865,-11.37167 30.18865,-11.37167 z" />
|
||||
<path
|
||||
d="m 135.40067,121.39576 -19.13282,-16.68013 1.46402,2.79127 -11.51011,10.00443 -11.073881,-9.65144 0.530398,-4.27378 -21.078929,17.7001"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path8" />
|
||||
<path
|
||||
d="m 95.673149,101.4792 -0.223947,2.04167 1.153825,23.56591 9.330523,1.19741 8.56236,-2.05782 0.0549,-24.67512 c 0,0 -0.73305,0.89401 -1.15922,1.29689 -2.12285,2.08807 -4.80983,3.31452 -8.30219,3.27748 -3.62026,0.0152 -5.881517,-0.95256 -8.273357,-3.25243 -0.392181,-0.38159 -0.821931,-0.96288 -1.142934,-1.39399 z"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:1.30555;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path7"
|
||||
sodipodi:nodetypes="cccccccccc" />
|
||||
<path
|
||||
style="fill:#b54f3e;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:square;paint-order:markers stroke fill"
|
||||
d="m 105.00001,72.559541 c 0,0 -1.34143,2.697245 -2.4273,2.946668 -1.08587,0.249425 -2.722425,0.355229 -2.722425,0.355229 0,0 0.986375,2.368259 2.695355,2.731609 1.70898,0.363352 4.53721,0.414533 5.1435,0.04323 0.6063,-0.371306 2.05634,-1.320856 2.17321,-1.65993 0.11688,-0.339071 0.23401,-1.062246 0.23401,-1.062246 0,0 -3.72843,-0.753446 -5.09635,-3.185309"
|
||||
id="path1" />
|
||||
<path
|
||||
id="path16"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 105.01325,69.755525 c 0.14703,3.176294 0.7727,4.350084 2.18626,5.387065 1.41356,1.036965 3.68568,0.486149 4.56871,0 0.88302,-0.48615 2.28434,-1.530622 2.28434,-3.293993 m -9.0658,-2.093072 c -0.14702,3.176294 -0.77269,4.350084 -2.18625,5.387065 -1.41357,1.036965 -3.685685,0.486149 -4.56871,0 -0.883025,-0.48615 -2.284345,-1.530622 -2.284345,-3.293993" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path17"
|
||||
d="m 110.26178,75.907433 a 5.2617737,3.0022512 0 0 1 -2.63089,2.60003 5.2617737,3.0022512 0 0 1 -5.26178,0 5.2617737,3.0022512 0 0 1 -2.630884,-2.60003" />
|
||||
<path
|
||||
style="fill:#1f3156;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.32292, 2.64583;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 93.323451,120.85511 2.396888,6.23167"
|
||||
id="path24" />
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.91639;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect22"
|
||||
width="3.811146"
|
||||
height="7.3996334"
|
||||
x="87.450607"
|
||||
y="65.308456"
|
||||
rx="1.5089842"
|
||||
ry="1.5089842" />
|
||||
<path
|
||||
d="m 103.16279,37.666884 c -6.723984,-0.226971 -8.821557,4.694301 -12.970493,7.237653 -5.109055,0.944234 -4.806314,10.343535 -4.054164,16.445261 0.123196,-3.094324 2.215817,-5.530243 4.762752,-5.54412 0.889504,1.87e-4 1.761408,0.301667 2.517997,0.870643 -0.06339,-0.535973 -0.343921,-1.073924 -0.835428,-1.983239 -1.147421,-2.122851 0.02975,-1.807774 0.73441,-3.748806 0.685039,-1.887236 4.89914,-0.239601 9.930276,0.703106 7.8e-4,2.8e-4 0.002,4.98e-4 0.003,7.79e-4 0.14251,0.02663 0.27818,0.05747 0.422,0.08301 0.6014,0.106531 1.14188,0.162553 1.63874,0.180869 0.47455,-0.01838 0.99076,-0.07445 1.56512,-0.180869 0.26234,-0.04859 0.51191,-0.106843 0.76966,-0.159719 4.64198,-0.951273 8.48383,-2.466071 9.12146,-0.627147 0.67299,1.941015 1.79761,1.625939 0.70153,3.748805 -0.46951,0.909315 -0.7366,1.447266 -0.79705,1.983224 0.72248,-0.568774 1.55505,-0.870254 2.40446,-0.870643 2.43332,0.01246 4.43283,2.449328 4.55056,5.54412 0.71849,-6.101742 1.00714,-15.501028 -3.87331,-16.445245 -4.22224,-2.024466 -5.91766,-7.237669 -12.3903,-7.237669 -1.40045,0 -2.80088,1.5e-5 -4.20133,0 z"
|
||||
style="stroke:#000000;stroke-width:0.432946;stroke-linecap:square;stroke-linejoin:round"
|
||||
id="path27" />
|
||||
<g
|
||||
id="g19"
|
||||
transform="matrix(1.5574727,0,0,1.5574727,-142.21504,-27.891176)">
|
||||
<ellipse
|
||||
style="fill:#cf3c23;fill-opacity:1;stroke:none;stroke-width:0.472496;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse11-0"
|
||||
cx="150.20351"
|
||||
cy="58.517475"
|
||||
rx="3.2734523"
|
||||
ry="3.235615" />
|
||||
<ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.339659;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse12-2"
|
||||
cx="150.20351"
|
||||
cy="58.517475"
|
||||
rx="2.3531568"
|
||||
ry="2.3259571" />
|
||||
<path
|
||||
style="fill:#e2c16d;fill-opacity:1;stroke:#000000;stroke-width:0.8494;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path19"
|
||||
d="m 146.43601,57.480972 a 3.7675014,3.8452704 0 0 1 3.7675,-3.84527 3.7675014,3.8452704 0 0 1 3.7675,3.84527 h -3.7675 z" />
|
||||
<ellipse
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.145551;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="ellipse13-3"
|
||||
cx="148.64229"
|
||||
cy="58.536304"
|
||||
rx="1.0083772"
|
||||
ry="0.99672139" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.91639;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="rect21"
|
||||
width="3.811146"
|
||||
height="7.3996334"
|
||||
x="118.76884"
|
||||
y="65.308456"
|
||||
rx="1.5089842"
|
||||
ry="1.5089842" />
|
||||
<path
|
||||
style="fill:#e2c16d;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
id="path20"
|
||||
d="m 111.78869,61.969326 a 5.8677806,5.9889037 0 0 1 5.86778,-5.988903 5.8677806,5.9889037 0 0 1 5.86777,5.988903 h -5.86777 z" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 104.7079,42.293839 c 0,0 1.74678,3.167012 0.0263,6.146847"
|
||||
id="path29" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 109.32481,44.591423 c 0,0 0.68684,1.460614 0.0411,2.279486"
|
||||
id="path30" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#4c4c4c;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 100.4742,44.591423 c 0,0 0.68685,1.460614 0.0411,2.279486"
|
||||
id="path31" />
|
||||
<path
|
||||
d="m 99.038399,125.02486 0.238745,1.52029 0.982886,6.25939 a 12.852294,4.3909262 0 0 0 5.25446,0.40203 12.852294,4.3909262 0 0 0 4.65243,-0.30591 l 0.99787,-6.35551 0.2558,-1.62828 a 12.852294,4.3909262 0 0 0 -5.9061,-0.49247 12.852294,4.3909262 0 0 0 -6.476091,0.60046 z"
|
||||
style="opacity:1;fill:#ffffff;stroke-width:1.67371;stroke-linecap:square"
|
||||
id="path26" />
|
||||
<path
|
||||
d="m 94.53799,55.547596 c -0.73841,0.01574 -1.49107,0.143678 -2.27428,0.242362 -0.97177,0.122442 -2.51938,0.626736 -3.48092,0.875916 -0.88304,0.228833 -4.64397,1.284587 -5.43481,1.927531 -0.6807,0.553397 0.14132,3.073399 0.30075,3.383256 0.48862,0.46508 1.52136,-0.490322 1.52136,0.422196 0,3.650072 3.17581,6.609417 7.09362,6.609416 3.9178,-5e-6 7.09414,-2.959349 7.09414,-6.609416 0,-1.016086 3.45455,-1.878074 5.64217,-1.884639 2.08794,0.0045 5.60983,0.866316 5.64265,1.884639 0.11758,3.648195 3.17581,6.609411 7.09362,6.609416 3.91784,10e-7 7.09414,-2.959322 7.09414,-6.609416 0,-0.912523 1.03223,0.04289 1.52084,-0.422196 0.15944,-0.309859 0.98146,-2.829856 0.30076,-3.383256 -0.79085,-0.642948 -4.55125,-1.698697 -5.43429,-1.927531 -0.96155,-0.249182 -2.50966,-0.753473 -3.48145,-0.875916 -2.08857,-0.263158 -3.95879,-0.733773 -5.92522,1.267106 -0.73196,0.744818 -1.00196,1.850433 -1.10432,3.007052 -0.85483,-1.189994 -3.13741,-1.988885 -5.70663,-1.997294 -2.56895,0.0083 -4.85144,0.806987 -5.70663,1.996777 -0.10239,-1.15643 -0.37299,-2.26183 -1.10484,-3.006535 -1.229,-1.250542 -2.42025,-1.535698 -3.65094,-1.509468 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#feedc1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
id="path11"
|
||||
sodipodi:nodetypes="cssscssscssscsssscccccc" />
|
||||
<path
|
||||
id="path12"
|
||||
style="fill:url(#linearGradient6);fill-opacity:1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 123.28819,63.235036 c -0.18455,2.183777 -2.49006,4.476805 -5.50046,4.476805 -3.0104,0 -5.8126,-2.235842 -5.8126,-4.692554 0,-1.234751 0.17748,-3.601511 1.31349,-4.723274 1.13601,-1.121763 4.45937,-0.909075 7.21766,0.09022 2.75829,0.999299 2.96646,2.665022 2.78191,4.848799 z"
|
||||
sodipodi:nodetypes="zsszzzz" />
|
||||
<path
|
||||
id="path13"
|
||||
style="fill:url(#linearGradient7);fill-opacity:1;stroke-width:2;stroke-linecap:square;stroke-dasharray:none"
|
||||
d="m 86.62472,63.235036 c 0.18455,2.183777 2.49006,4.476805 5.50046,4.476805 3.0104,0 5.8126,-2.235842 5.8126,-4.692554 0,-1.234751 -0.17748,-3.601511 -1.31349,-4.723274 -1.13601,-1.121763 -4.45937,-0.909075 -7.21766,0.09022 -2.75829,0.999299 -2.96646,2.665022 -2.78191,4.848799 z"
|
||||
sodipodi:nodetypes="zsszzzz" />
|
||||
<path
|
||||
id="path14"
|
||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 98.71837,67.395689 h 2.55067 m 7.46195,0 h 2.55067 m -2.55382,0.01246 c 0,0.56393 -0.84714,1.096601 -1.9783,1.378566 -1.13116,0.28198 -2.52483,0.28198 -3.656,0 -1.13116,-0.281965 -1.82799,-0.803064 -1.82799,-1.36701" />
|
||||
<g
|
||||
id="g26"
|
||||
transform="translate(-0.02360198)">
|
||||
<g
|
||||
id="g20"
|
||||
transform="rotate(-24.316399,114.62897,100.27061)">
|
||||
<path
|
||||
id="path5"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 108.77884,121.93278 8.39018,-4.57387 -3.60546,-6.29936 5.72317,0.32815 -5.1098,-10.15494 -6.23838,9.5038 -3.24628,4.9625 -4.08609,6.23372 -4.542358,6.93136 8.628418,-4.70358 z" />
|
||||
<ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path10"
|
||||
cx="113.6947"
|
||||
cy="116.68105"
|
||||
rx="1.1516093"
|
||||
ry="1.1658812" />
|
||||
</g>
|
||||
<g
|
||||
id="g22"
|
||||
transform="matrix(-0.91128546,-0.4117752,-0.4117752,0.91128546,241.69608,56.096826)">
|
||||
<path
|
||||
id="path21"
|
||||
style="fill:#4c4c4c;fill-opacity:1;stroke:#000000;stroke-width:1.32292;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
|
||||
d="m 109.26106,122.15068 8.39018,-4.57387 -3.60546,-6.29936 5.72317,0.32815 -5.1098,-10.15494 -6.23838,9.5038 -3.24628,4.9625 -4.08609,6.23372 -4.542356,6.93136 8.628416,-4.70358 z" />
|
||||
<ellipse
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.32292;stroke-linecap:square;stroke-linejoin:round;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="ellipse22"
|
||||
cx="113.6947"
|
||||
cy="116.68105"
|
||||
rx="1.1516093"
|
||||
ry="1.1658812" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 22 KiB |
8
docsite/tsconfig.json
Normal file
8
docsite/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
// This file is not used in compilation. It is here just for a nice editor experience.
|
||||
"extends": "@docusaurus/tsconfig",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "."
|
||||
},
|
||||
"exclude": [".docusaurus", "build"]
|
||||
}
|
||||
Reference in New Issue
Block a user