katago download
This commit is contained in:
1 parent
b26720844a
commit
219f327c20
23 files changed
+339
-30
No files matched your search
@@ -1,11 +1,17 @@
|
|||||||
# Example config for C++ (non-python) gtp bot
|
# Example config for C++ (non-python) gtp bot
|
||||||
|
|
||||||
# SEE NOTES ABOUT PERFORMANCE AND MEMORY USAGE IN gtp_example.cfg
|
# SEE NOTES ABOUT PERFORMANCE AND MEMORY USAGE IN gtp_example.cfg
|
||||||
|
# SEE NOTES ABOUT numSearchThreads AND OTHER IMPORTANT PARAMS BELOW!
|
||||||
|
|
||||||
# Logs------------------------------------------------------------------------------------
|
# Logs------------------------------------------------------------------------------------
|
||||||
|
|
||||||
# Where to output log?
|
# Where to output log?
|
||||||
logFile = "~/.katrain/katago_log.txt"
|
logFile = "~/.katrain/katago_log.txt"
|
||||||
|
# logFile = analysis.log # Use this instead of logDir to just specify a single file directly
|
||||||
|
# logToStderr = true # Echo everything output to log file to stderr as well
|
||||||
|
# logAllRequests = false # Log all input lines received to the analysis engine.
|
||||||
|
# logAllResponses = false # Log all lines output to stdout from the analysis engine.
|
||||||
|
# logSearchInfo = false # Log debug info for every search performed
|
||||||
|
|
||||||
# Controls the number of moves after the first move in a variation.
|
# Controls the number of moves after the first move in a variation.
|
||||||
# analysisPVLen = 15
|
# analysisPVLen = 15
|
||||||
@@ -47,20 +53,56 @@ maxVisits = 500
|
|||||||
# If provided, cap search time at this many seconds
|
# If provided, cap search time at this many seconds
|
||||||
# maxTime = 60
|
# maxTime = 60
|
||||||
|
|
||||||
# Number of threads to use in each search in parallel for any SINGLE position.
|
|
||||||
# NOTE: Analysis engine can specify number of POSITIONS to be able to search in parallel via command line argument
|
|
||||||
# so this number does not necessarily need to be larger than 1, although you can still set it larger if you prefer
|
|
||||||
# to analyze fewer positions in parallel but spend more threads on each position.
|
|
||||||
# Generally, having more threads on a single position will worsen the quality of search slightly, holding fixed the
|
|
||||||
# number of visits, and thread contention will reduce efficiency, so cross-position parallelization is preferable
|
|
||||||
# to numSearchThreads, but numSearchThreads is preferable if you want to reduce latency, and have individual
|
|
||||||
# searches complete faster by doing fewer of them at a time.
|
|
||||||
numSearchThreads = 6
|
|
||||||
|
|
||||||
# GPU Settings-------------------------------------------------------------------------------
|
# numSearchThreads is the number of threads to use in each MCTS tree search in parallel for any individual position.
|
||||||
|
# But NOTE: Analysis engine also specifies max number of POSITIONS to be able to search in parallel via command line
|
||||||
|
# argument, -num-analysis-threads.
|
||||||
|
|
||||||
|
# Parallelization across positions is more efficient since the threads on different positions operate
|
||||||
|
# on different MCTS trees so they don't have to synchronize with each other. Also, multiple threads on the same MCTS
|
||||||
|
# tree weakens the search (holding playouts fixed) due to out of date statistics on nodes and suboptimal exploration,
|
||||||
|
# although the loss is still quite small for only 2,4,8 threads. So you often want to keep numSearchThreads small,
|
||||||
|
# unlike in GTP.
|
||||||
|
|
||||||
|
# But obviously you only get the benefit of parallelization across positions when you actually have lots of positions
|
||||||
|
# that you are querying at once.
|
||||||
|
|
||||||
|
# Therefore:
|
||||||
|
# * If you plan to use the analysis engine only for batch processing large numbers of positions,
|
||||||
|
# it's preferable to set this to only a small number (e.g. 1,2,4) and use a higher -num-analysis-threads.
|
||||||
|
# * But if you sometimes plan to query the analysis engine for single positions, or otherwise in smaller quantities
|
||||||
|
# than -num-analysis-threads, or if you plan to be user-interactive such that the response time on some individual
|
||||||
|
# analysis requests is important to keep low, then set this to a larger number and use somewhat fewer analysis threads,
|
||||||
|
# That way, individual searches complete faster due to having more threads on each one and doing fewer other ones at a time.
|
||||||
|
|
||||||
|
# For 19x19 boards, weaker GPUs probably want a TOTAL number of threads (numSearchThreads * num-analysis-threads)
|
||||||
|
# between 4 and 32. Mid-tier GPUs probably between 16 and 64. Strong GPUs probably between 32 and 256.
|
||||||
|
# But there's no substitute for experimenting and seeing what's best for your hardware and your usage case.
|
||||||
|
# Keep in mind that the number of threads you want doesn't necessarily have much to do with how many cores you
|
||||||
|
# have on your system, and could easily exceed the number of cores. GPU batching is (usually) the dominant consideration.
|
||||||
|
numSearchThreads = 10
|
||||||
|
|
||||||
|
|
||||||
|
# nnMaxBatchSize is the max number of positions to send to a single GPU at once. Generally, it should be the case that:
|
||||||
|
# (number of GPUs you will use * nnMaxBatchSize) >= (numSearchThreads * num-analysis-threads)
|
||||||
|
# That way, when each threads tries to request a GPU eval, your batch size summed across GPUs is large enough to handle them
|
||||||
|
# all at once. However, it can be sensible to set this a little smaller if you are limited on GPU memory,
|
||||||
|
# too large a number may fail if the GPU doesn't have enough memory.
|
||||||
|
nnMaxBatchSize = 96
|
||||||
|
|
||||||
|
# Uncomment and set these smaller if you ONLY are going to use the analysis engine for smaller boards (or plan to
|
||||||
|
# run multiple instances, with some instances only handling smaller boards). It should improve performance.
|
||||||
|
# It may also mean you can use more threads profitably.
|
||||||
|
# maxBoardXSizeForNNBuffer = 19
|
||||||
|
# maxBoardYSizeForNNBuffer = 19
|
||||||
|
|
||||||
|
# TO USE MULTIPLE GPUS:
|
||||||
|
# Uncomment and set this to the number of GPUs you have and/or would like to use...
|
||||||
|
# AND if it is more than 1, uncomment the appropriate CUDA or OpenCL section below.
|
||||||
|
# numNNServerThreadsPerModel = 1
|
||||||
|
|
||||||
|
# Other General GPU Settings-------------------------------------------------------------------------------
|
||||||
|
|
||||||
# Maximum number of positions to send to GPU at once.
|
|
||||||
nnMaxBatchSize = 72
|
|
||||||
# Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree.
|
# Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree.
|
||||||
nnCacheSizePowerOfTwo = 19
|
nnCacheSizePowerOfTwo = 19
|
||||||
# Size of mutex pool for nnCache is 2 ** this
|
# Size of mutex pool for nnCache is 2 ** this
|
||||||
@@ -99,7 +141,6 @@ nnRandomize = true
|
|||||||
# cudaUseFP16 = auto
|
# cudaUseFP16 = auto
|
||||||
# cudaUseNHWC = auto
|
# cudaUseNHWC = auto
|
||||||
|
|
||||||
|
|
||||||
# OpenCL GPU settings--------------------------------------
|
# OpenCL GPU settings--------------------------------------
|
||||||
# These only apply when using the OpenCL version of KataGo.
|
# These only apply when using the OpenCL version of KataGo.
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"engine": {
|
"engine": {
|
||||||
"katago": "",
|
"katago": "",
|
||||||
|
"altcommand": "",
|
||||||
"model": "katrain/models/g170e-b15c192-s1672170752-d466197061.bin.gz",
|
"model": "katrain/models/g170e-b15c192-s1672170752-d466197061.bin.gz",
|
||||||
"config": "katrain/KataGo/analysis_config.cfg",
|
"config": "katrain/KataGo/analysis_config.cfg",
|
||||||
"threads": 12,
|
"threads": 12,
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
"anim_pv_time": 0.5,
|
"anim_pv_time": 0.5,
|
||||||
"debug_level": 0,
|
"debug_level": 0,
|
||||||
"lang": "en",
|
"lang": "en",
|
||||||
"version": "1.3.5"
|
"version": "1.4.0"
|
||||||
},
|
},
|
||||||
"timer": {
|
"timer": {
|
||||||
"byo_length": 30,
|
"byo_length": 30,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
VERSION = "1.3.5"
|
VERSION = "1.4.0"
|
||||||
HOMEPAGE = "https://github.com/sanderland/katrain"
|
HOMEPAGE = "https://github.com/sanderland/katrain"
|
||||||
CONFIG_MIN_VERSION = "1.3.3" # keep config files from this version
|
CONFIG_MIN_VERSION = "1.4.0" # keep config files from this version
|
||||||
|
|
||||||
OUTPUT_ERROR = -1
|
OUTPUT_ERROR = -1
|
||||||
OUTPUT_KATAGO_STDERR = -0.5
|
OUTPUT_KATAGO_STDERR = -0.5
|
||||||
|
|||||||
+114
-1
@@ -2,6 +2,7 @@ import glob
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from typing import Any, Dict, List, Tuple, Union
|
from typing import Any, Dict, List, Tuple, Union
|
||||||
|
from zipfile import ZipFile
|
||||||
|
|
||||||
from kivy.clock import Clock
|
from kivy.clock import Clock
|
||||||
from kivy.metrics import dp
|
from kivy.metrics import dp
|
||||||
@@ -10,6 +11,7 @@ from kivy.uix.anchorlayout import AnchorLayout
|
|||||||
from kivy.uix.boxlayout import BoxLayout
|
from kivy.uix.boxlayout import BoxLayout
|
||||||
from kivy.uix.label import Label
|
from kivy.uix.label import Label
|
||||||
from kivy.uix.popup import Popup
|
from kivy.uix.popup import Popup
|
||||||
|
from kivy.utils import platform
|
||||||
from kivymd.app import MDApp
|
from kivymd.app import MDApp
|
||||||
from kivymd.uix.boxlayout import MDBoxLayout
|
from kivymd.uix.boxlayout import MDBoxLayout
|
||||||
from kivymd.uix.selectioncontrol import MDCheckbox
|
from kivymd.uix.selectioncontrol import MDCheckbox
|
||||||
@@ -374,12 +376,14 @@ class ConfigPopup(QuickConfigGui):
|
|||||||
def __init__(self, katrain):
|
def __init__(self, katrain):
|
||||||
super().__init__(katrain)
|
super().__init__(katrain)
|
||||||
self.paths = [self.katrain.config("engine/model"), "katrain/models", "~/.katrain"]
|
self.paths = [self.katrain.config("engine/model"), "katrain/models", "~/.katrain"]
|
||||||
|
self.katago_paths = [self.katrain.config("engine/katago"), "katrain/KataGo", "~/.katrain"]
|
||||||
MDApp.get_running_app().bind(language=self.check_models)
|
MDApp.get_running_app().bind(language=self.check_models)
|
||||||
|
MDApp.get_running_app().bind(language=self.check_katas)
|
||||||
|
|
||||||
def build_and_set_properties(self, *_args):
|
def build_and_set_properties(self, *_args):
|
||||||
super().build_and_set_properties()
|
super().build_and_set_properties()
|
||||||
|
|
||||||
def check_models(self, *args): # WIP
|
def check_models(self, *args):
|
||||||
done = set()
|
done = set()
|
||||||
model_files = []
|
model_files = []
|
||||||
for path in self.paths + [self.model_path.text]:
|
for path in self.paths + [self.model_path.text]:
|
||||||
@@ -405,12 +409,55 @@ class ConfigPopup(QuickConfigGui):
|
|||||||
self.model_files.values = [models_available_msg] + model_files
|
self.model_files.values = [models_available_msg] + model_files
|
||||||
self.model_files.text = models_available_msg
|
self.model_files.text = models_available_msg
|
||||||
|
|
||||||
|
def check_katas(self, *args):
|
||||||
|
done = set()
|
||||||
|
model_files = []
|
||||||
|
for path in self.katago_paths + [self.katago_path.text]:
|
||||||
|
path = path.rstrip("/\\")
|
||||||
|
if path.startswith("katrain"):
|
||||||
|
path = path.replace("katrain", PATHS["PACKAGE"].rstrip("/\\"), 1)
|
||||||
|
path = os.path.expanduser(path)
|
||||||
|
if not os.path.isdir(path):
|
||||||
|
path, _file = os.path.split(path)
|
||||||
|
slashpath = path.replace("\\", "/")
|
||||||
|
if slashpath in done or not os.path.isdir(path):
|
||||||
|
continue
|
||||||
|
done.add(slashpath)
|
||||||
|
files = [
|
||||||
|
f.replace("/", os.path.sep).replace(PATHS["PACKAGE"], "katrain")
|
||||||
|
for ftype in ["katago*"]
|
||||||
|
for f in glob.glob(slashpath + "/" + ftype)
|
||||||
|
if os.path.isfile(f) and not f.endswith(".zip")
|
||||||
|
]
|
||||||
|
if files and path not in self.paths:
|
||||||
|
self.paths.append(path) # persistent on paths with models found
|
||||||
|
model_files += files
|
||||||
|
katas_available_msg = i18n._("katago binaries available").format(num=len(model_files))
|
||||||
|
self.katago_files.values = [katas_available_msg, i18n._("default katago option")] + model_files
|
||||||
|
self.katago_files.text = katas_available_msg
|
||||||
|
|
||||||
MODELS = {
|
MODELS = {
|
||||||
"latest 20b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170e-b20c256x2-s5303129600-d1228401921.bin.gz",
|
"latest 20b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170e-b20c256x2-s5303129600-d1228401921.bin.gz",
|
||||||
"latest 30b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b30c320x2-s4824661760-d1229536699.bin.gz",
|
"latest 30b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b30c320x2-s4824661760-d1229536699.bin.gz",
|
||||||
"latest 40b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b40c256x2-s5095420928-d1229425124.bin.gz",
|
"latest 40b": "https://github.com/lightvector/KataGo/releases/download/v1.4.5/g170-b40c256x2-s5095420928-d1229425124.bin.gz",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KATAGOS = {
|
||||||
|
"windows": {
|
||||||
|
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x64.zip",
|
||||||
|
"Official OpenCL v1.6.0 (32 bit)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x32-dont-use-unless-actually-32bit-windows.zip",
|
||||||
|
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-windows-x64.zip",
|
||||||
|
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-windows-x64.zip",
|
||||||
|
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-windows-x64.zip",
|
||||||
|
},
|
||||||
|
"linux": {
|
||||||
|
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-linux-x64.zip",
|
||||||
|
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-linux-x64.zip",
|
||||||
|
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-linux-x64.zip",
|
||||||
|
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-linux-x64.zip",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
def download_models(self, *_largs):
|
def download_models(self, *_largs):
|
||||||
def download_complete(req, tmp_path, path, model):
|
def download_complete(req, tmp_path, path, model):
|
||||||
try:
|
try:
|
||||||
@@ -452,6 +499,72 @@ class ConfigPopup(QuickConfigGui):
|
|||||||
self.download_progress_box.add_widget(Label(text=i18n._("All models downloaded"), text_size=(None, dp(50))))
|
self.download_progress_box.add_widget(Label(text=i18n._("All models downloaded"), text_size=(None, dp(50))))
|
||||||
print("x")
|
print("x")
|
||||||
|
|
||||||
|
def download_katas(self, *_largs):
|
||||||
|
def unzipped_name(zipfile):
|
||||||
|
if platform == "windows":
|
||||||
|
return zipfile.replace(".zip", ".exe")
|
||||||
|
else:
|
||||||
|
return zipfile.replace(".zip", "")
|
||||||
|
|
||||||
|
def download_complete(req, tmp_path, path, binary):
|
||||||
|
try:
|
||||||
|
if tmp_path.endswith(".zip"):
|
||||||
|
with ZipFile(tmp_path, "r") as zipObj:
|
||||||
|
exes = [f for f in zipObj.namelist() if f.startswith("katago")]
|
||||||
|
if len(exes) != 1:
|
||||||
|
raise FileNotFoundError(
|
||||||
|
f"Zip file {tmp_path} does not contain exactly 1 file starting with 'katago' (contents: {zipObj.namelist()})"
|
||||||
|
)
|
||||||
|
with open(path, "wb") as fout:
|
||||||
|
fout.write(zipObj.read(exes[0]))
|
||||||
|
else:
|
||||||
|
os.rename(tmp_path, path)
|
||||||
|
self.katrain.log(f"Download of katago binary {binary} model complete -> {path}", OUTPUT_INFO)
|
||||||
|
except Exception as e:
|
||||||
|
self.katrain.log(
|
||||||
|
f"Download of katago binary {binary} complete, but could not move file: {e}", OUTPUT_ERROR
|
||||||
|
)
|
||||||
|
self.check_katas()
|
||||||
|
|
||||||
|
for c in self.download_progress_box.children:
|
||||||
|
if isinstance(c, ProgressLoader) and c.request:
|
||||||
|
c.request.cancel()
|
||||||
|
self.katago_download_progress_box.clear_widgets()
|
||||||
|
downloading = False
|
||||||
|
for name, url in self.KATAGOS.get(platform, {}).items():
|
||||||
|
filename = os.path.split(url)[1]
|
||||||
|
exe_name = unzipped_name(filename)
|
||||||
|
if not any(os.path.split(f)[1] == exe_name for f in self.katago_files.values):
|
||||||
|
savepath_tmp = os.path.expanduser(os.path.join("~/.katrain", filename))
|
||||||
|
exe_path_name = os.path.expanduser(os.path.join("~/.katrain", exe_name))
|
||||||
|
self.katrain.log(f"Downloading binary {name} from {url} to {savepath_tmp}", OUTPUT_INFO)
|
||||||
|
progress = ProgressLoader(
|
||||||
|
download_url=url,
|
||||||
|
path_to_file=savepath_tmp,
|
||||||
|
downloading_text=f"Downloading {name}: " + "{}",
|
||||||
|
label_downloading_text=f"Starting download for {name}",
|
||||||
|
download_complete=lambda req, tmp=savepath_tmp, path=exe_path_name, model=name: download_complete(
|
||||||
|
req, tmp, path, model
|
||||||
|
),
|
||||||
|
download_redirected=lambda req, mname=name: self.katrain.log(
|
||||||
|
f"Download {mname} redirected {req.resp_headers}", OUTPUT_DEBUG
|
||||||
|
),
|
||||||
|
download_error=lambda req, error, mname=name: self.katrain.log(
|
||||||
|
f"Download of {mname} failed or cancelled ({error})", OUTPUT_ERROR
|
||||||
|
),
|
||||||
|
)
|
||||||
|
progress.start(self.katago_download_progress_box)
|
||||||
|
downloading = True
|
||||||
|
if not downloading:
|
||||||
|
if not self.KATAGOS.get(platform):
|
||||||
|
self.katago_download_progress_box.add_widget(
|
||||||
|
Label(text=f"No binaries available for platform {platform}", text_size=(None, dp(50)))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.katago_download_progress_box.add_widget(
|
||||||
|
Label(text=i18n._("All binaries downloaded"), text_size=(None, dp(50)))
|
||||||
|
)
|
||||||
|
|
||||||
def update_config(self, save_to_file=True):
|
def update_config(self, save_to_file=True):
|
||||||
updated = super().update_config(save_to_file=save_to_file)
|
updated = super().update_config(save_to_file=save_to_file)
|
||||||
self.katrain.debug_level = self.katrain.config("general/debug_level", OUTPUT_INFO)
|
self.katrain.debug_level = self.katrain.config("general/debug_level", OUTPUT_INFO)
|
||||||
|
|||||||
Binary file not shown.
@@ -617,3 +617,19 @@ msgstr ""
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -655,9 +655,25 @@ msgstr "Colour Theme"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand:hint"
|
msgid "engine:altcommand:hint"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Full command used to start the engine, for e.g. using plink to connect to a "
|
"Full command used to start the engine. All other model options will be "
|
||||||
"remote engine. All other model options will be ignored."
|
"ignored."
|
||||||
|
|
||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -416,8 +416,8 @@ msgstr "Override Engine Command"
|
|||||||
|
|
||||||
msgid "engine:altcommand:hint"
|
msgid "engine:altcommand:hint"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Full command used to start the engine, for e.g. using plink to connect to a "
|
"Full command used to start the engine. All other model options will be "
|
||||||
"remote engine. All other model options will be ignored."
|
"ignored."
|
||||||
|
|
||||||
msgid "engine:max_visits"
|
msgid "engine:max_visits"
|
||||||
msgstr "Maximum number of visits in analysis"
|
msgstr "Maximum number of visits in analysis"
|
||||||
@@ -636,14 +636,30 @@ msgstr "Estimated Strength"
|
|||||||
msgid "download models button"
|
msgid "download models button"
|
||||||
msgstr "Download Models"
|
msgstr "Download Models"
|
||||||
|
|
||||||
|
#. button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
#. shown on on the model select dropdown
|
#. shown on on the model select dropdown
|
||||||
msgid "models available"
|
msgid "models available"
|
||||||
msgstr "{num} available model(s) found"
|
msgstr "{num} available model(s) found"
|
||||||
|
|
||||||
|
#. shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
#. error message on trying to download models when already done
|
#. error message on trying to download models when already done
|
||||||
msgid "All models downloaded"
|
msgid "All models downloaded"
|
||||||
msgstr "All available models already downloaded"
|
msgstr "All available models already downloaded"
|
||||||
|
|
||||||
|
#. error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
|
|
||||||
#. label in little popup for analyzing entire game
|
#. label in little popup for analyzing entire game
|
||||||
msgid "reanalyze max visits"
|
msgid "reanalyze max visits"
|
||||||
msgstr "Number of visits per move"
|
msgstr "Number of visits per move"
|
||||||
|
|||||||
Binary file not shown.
@@ -657,3 +657,19 @@ msgstr ""
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -692,9 +692,25 @@ msgstr "Colour Theme"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand:hint"
|
msgid "engine:altcommand:hint"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Full command used to start the engine, for e.g. using plink to connect to a "
|
"Full command used to start the engine. All other model options will be "
|
||||||
"remote engine. All other model options will be ignored."
|
"ignored."
|
||||||
|
|
||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -640,3 +640,19 @@ msgstr "エンジン起動コマンド全体 (plinkでリモートエンジン
|
|||||||
|
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "エンジンコマンドの上書き"
|
msgstr "エンジンコマンドの上書き"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -627,9 +627,25 @@ msgstr "Colour Theme"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand:hint"
|
msgid "engine:altcommand:hint"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Full command used to start the engine, for e.g. using plink to connect to a "
|
"Full command used to start the engine. All other model options will be "
|
||||||
"remote engine. All other model options will be ignored."
|
"ignored."
|
||||||
|
|
||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
Binary file not shown.
@@ -652,9 +652,25 @@ msgstr "Colour Theme"
|
|||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand:hint"
|
msgid "engine:altcommand:hint"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Full command used to start the engine, for e.g. using plink to connect to a "
|
"Full command used to start the engine. All other model options will be "
|
||||||
"remote engine. All other model options will be ignored."
|
"ignored."
|
||||||
|
|
||||||
#. TODO
|
#. TODO
|
||||||
msgid "engine:altcommand"
|
msgid "engine:altcommand"
|
||||||
msgstr "Override Engine Command"
|
msgstr "Override Engine Command"
|
||||||
|
|
||||||
|
#. TODO - button in general settings for downloading models
|
||||||
|
msgid "download katago button"
|
||||||
|
msgstr "Download KataGo versions"
|
||||||
|
|
||||||
|
#. TODO - shown on on the model select dropdown
|
||||||
|
msgid "katago binaries available"
|
||||||
|
msgstr "{num} available binaries found"
|
||||||
|
|
||||||
|
#. TODO - shown on on the katago binary select dropdown
|
||||||
|
msgid "default katago option"
|
||||||
|
msgstr "Detect platform and use provided binary"
|
||||||
|
|
||||||
|
#. TODO - error message on trying to download models when already done
|
||||||
|
msgid "All binaries downloaded"
|
||||||
|
msgstr "All available binaries already downloaded"
|
||||||
+29
-3
@@ -80,23 +80,45 @@
|
|||||||
<ConfigPopup>:
|
<ConfigPopup>:
|
||||||
configfile: configfile
|
configfile: configfile
|
||||||
model_path: model_path
|
model_path: model_path
|
||||||
|
katago_path: katago_path
|
||||||
model_files: model_files
|
model_files: model_files
|
||||||
|
katago_files: katago_files
|
||||||
download_progress_box: download_progress_box
|
download_progress_box: download_progress_box
|
||||||
|
katago_download_progress_box: katago_download_progress_box
|
||||||
DescriptionLabel:
|
DescriptionLabel:
|
||||||
text: i18n._('katago settings')
|
text: i18n._('katago settings')
|
||||||
font_size: DESC_FONT_SIZE * 1.5
|
font_size: DESC_FONT_SIZE * 1.5
|
||||||
GridLayout:
|
GridLayout:
|
||||||
cols: 2
|
cols: 2
|
||||||
rows: 5
|
rows: 6
|
||||||
size_hint: 1,5
|
size_hint: 1,6
|
||||||
spacing: CP_SPACING
|
spacing: CP_SPACING
|
||||||
DescriptionLabel:
|
DescriptionLabel:
|
||||||
text: i18n._("engine:katago")
|
text: i18n._("engine:katago")
|
||||||
size_hint: 0.33, 1
|
size_hint: 0.33, 1
|
||||||
AnchorLayout:
|
AnchorLayout:
|
||||||
LabelledPathInput:
|
LabelledPathInput:
|
||||||
|
id: katago_path
|
||||||
input_property: "engine/katago"
|
input_property: "engine/katago"
|
||||||
hint_text: i18n._("engine:katago:hint")
|
hint_text: i18n._("engine:katago:hint")
|
||||||
|
on_text: root.check_katas()
|
||||||
|
AnchorLayout:
|
||||||
|
size_hint: 0.33, 1
|
||||||
|
AutoSizedRoundedRectangleButton:
|
||||||
|
text: i18n._("download katago button")
|
||||||
|
on_press: root.download_katas()
|
||||||
|
size_hint_y: 0.7
|
||||||
|
AnchorLayout:
|
||||||
|
Spinner:
|
||||||
|
id: katago_files
|
||||||
|
text: ''
|
||||||
|
on_text:
|
||||||
|
if self.text and self.text == self.values[1]: katago_path.text = ''
|
||||||
|
elif self.text and self.text != self.values[0]: katago_path.text = args[1]
|
||||||
|
size_hint_y: 0.7
|
||||||
|
sync_height_frac: 1.0
|
||||||
|
-font_size: self.height * 0.5
|
||||||
|
-background_color: [*[c*255/88 for c in BOX_BACKGROUND_COLOR[:3]], 1] # compensate for texture
|
||||||
DescriptionLabel:
|
DescriptionLabel:
|
||||||
text: i18n._("engine:config")
|
text: i18n._("engine:config")
|
||||||
size_hint: 0.33, 1
|
size_hint: 0.33, 1
|
||||||
@@ -207,9 +229,13 @@
|
|||||||
orientation: 'horizontal'
|
orientation: 'horizontal'
|
||||||
size_hint: 1,1.5
|
size_hint: 1,1.5
|
||||||
MDBoxLayout:
|
MDBoxLayout:
|
||||||
size_hint_x: 4 if self.children else 0.0001
|
size_hint_x: 3.5 if self.children else 0.0001
|
||||||
orientation: 'vertical'
|
orientation: 'vertical'
|
||||||
id: download_progress_box
|
id: download_progress_box
|
||||||
|
MDBoxLayout:
|
||||||
|
size_hint_x: 3.5 if self.children else 0.0001
|
||||||
|
orientation: 'vertical'
|
||||||
|
id: katago_download_progress_box
|
||||||
AnchorLayout:
|
AnchorLayout:
|
||||||
AutoSizedRoundedRectangleButton:
|
AutoSizedRoundedRectangleButton:
|
||||||
padding_x: 15
|
padding_x: 15
|
||||||
|
|||||||
Reference in new issue
Block a user