Provision Netron and Lab 1 local assets

This commit is contained in:
c4ch3c4d3
2026-04-16 11:15:39 -06:00
parent 56305680e0
commit 59f3032f91
16 changed files with 248 additions and 216 deletions
+2 -34
View File
@@ -15,10 +15,10 @@
- "{{ courseware_tools_dir }}"
- "{{ courseware_apps_dir }}"
- "{{ courseware_downloads_dir }}"
- "{{ courseware_lab1_dir }}"
- "{{ courseware_lab2_dir }}"
- "{{ courseware_safe_homes_dir }}"
- "{{ courseware_transformerlab_home }}"
- "{{ courseware_unsloth_home }}"
- "{{ courseware_lab1_models_dir }}"
- "{{ courseware_ollama_models_dir }}"
- name: Seed managed ownership markers
@@ -27,40 +27,8 @@
state: touch
mode: "0644"
loop:
- "{{ courseware_transformerlab_home }}/.courseware-managed"
- "{{ courseware_unsloth_home }}/.courseware-managed"
- name: Check existing TransformerLab path
stat:
path: "{{ ansible_env.HOME }}/.transformerlab"
follow: false
register: courseware_transformerlab_link
- name: Check existing TransformerLab ownership marker
stat:
path: "{{ ansible_env.HOME }}/.transformerlab/.courseware-managed"
register: courseware_transformerlab_marker
- name: Fail if TransformerLab path is already occupied
fail:
msg: "{{ ansible_env.HOME }}/.transformerlab already exists and is not managed by this project."
when:
- courseware_transformerlab_link.stat.exists
- >
(
(not courseware_transformerlab_link.stat.islnk) or
(courseware_transformerlab_link.stat.islnk and
courseware_transformerlab_link.stat.lnk_source != courseware_transformerlab_home)
) and
(not courseware_transformerlab_marker.stat.exists)
- name: Link TransformerLab home into project state
file:
src: "{{ courseware_transformerlab_home }}"
dest: "{{ ansible_env.HOME }}/.transformerlab"
state: link
force: true
- name: Check existing Unsloth path
stat:
path: "{{ ansible_env.HOME }}/.unsloth"
+71
View File
@@ -0,0 +1,71 @@
- name: Ensure Lab 1 model directory exists
file:
path: "{{ courseware_lab1_models_dir }}"
state: directory
mode: "0755"
- name: Check installed Ollama version
command:
argv:
- "{{ courseware_ollama_bin }}"
- --version
register: courseware_lab1_ollama_version
changed_when: false
- name: Extract installed Ollama semantic version
set_fact:
courseware_lab1_ollama_semver: >-
{{
courseware_lab1_ollama_version.stdout
| regex_search('[0-9]+\\.[0-9]+\\.[0-9]+')
| default('')
}}
- name: Fail when Ollama is too old for Lab 1 logprobs
fail:
msg: >-
Lab 1 requires Ollama {{ courseware_ollama_min_version }} or newer because
the confidence visualizer depends on logprob support. Installed version:
{{ courseware_lab1_ollama_version.stdout | trim }}.
when:
- courseware_lab1_ollama_semver | length == 0
or not (courseware_lab1_ollama_semver is version(courseware_ollama_min_version, '>='))
- name: Download mirrored Lab 1 Qwen model
get_url:
url: "{{ courseware_lab1_qwen_download_url }}"
dest: "{{ courseware_lab1_qwen_local_path }}"
mode: "0644"
- name: Download mirrored Lab 1 Llama model
get_url:
url: "{{ courseware_lab1_llama_download_url }}"
dest: "{{ courseware_lab1_llama_local_path }}"
mode: "0644"
- name: Write Lab 1 Ollama Modelfile
copy:
dest: "{{ courseware_lab1_dir }}/Modelfile.{{ courseware_lab1_qwen_model_alias }}"
mode: "0644"
content: |
FROM {{ courseware_lab1_qwen_local_path }}
- name: Start Ollama before Lab 1 model registration
command:
argv:
- "{{ courseware_root }}/scripts/service_manager.sh"
- start
- ollama
changed_when: false
- name: Register Lab 1 Qwen model with Ollama
command:
argv:
- "{{ courseware_ollama_bin }}"
- create
- "{{ courseware_lab1_qwen_model_alias }}"
- -f
- "{{ courseware_lab1_dir }}/Modelfile.{{ courseware_lab1_qwen_model_alias }}"
environment:
OLLAMA_HOST: "{{ courseware_bind_host }}:{{ courseware_ports.ollama }}"
OLLAMA_MODELS: "{{ courseware_ollama_models_dir }}"
+30
View File
@@ -0,0 +1,30 @@
- name: Create Netron virtual environment
command:
argv:
- "{{ courseware_python_bin }}"
- -m
- venv
- "{{ courseware_netron_venv_dir }}"
args:
creates: "{{ courseware_netron_venv_dir }}/bin/python"
- name: Upgrade Netron venv tooling
command:
argv:
- "{{ courseware_netron_venv_dir }}/bin/python"
- -m
- pip
- install
- --upgrade
- pip
- setuptools
- wheel
- name: Install Netron server runtime
command:
argv:
- "{{ courseware_netron_venv_dir }}/bin/python"
- -m
- pip
- install
- "netron=={{ courseware_netron_version }}"
+2 -2
View File
@@ -7,7 +7,7 @@
- name: Create Open WebUI virtual environment
command:
argv:
- "{{ courseware_transformerlab_home }}/envs/transformerlab/bin/python"
- "{{ courseware_python_bin }}"
- -m
- venv
- "{{ courseware_venvs_dir }}/open-webui"
@@ -39,7 +39,7 @@
- name: Create Embedding Atlas virtual environment
command:
argv:
- "{{ courseware_transformerlab_home }}/envs/transformerlab/bin/python"
- "{{ courseware_python_bin }}"
- -m
- venv
- "{{ courseware_venvs_dir }}/embedding-atlas"
@@ -1,3 +1,4 @@
{
"lab1NetronUrl": "http://{{ courseware_url_host }}:{{ courseware_ports.netron }}",
"lab3TerminalUrl": "http://{{ courseware_url_host }}:{{ courseware_ports.wetty }}{{ courseware_wetty_base_path }}"
}