File size: 6,336 Bytes
5caedb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
import os
import socket
from types import SimpleNamespace

import toml
from huggingface_hub.constants import _is_true

toml_root_dir = os.path.abspath(
    os.path.join(os.path.dirname(os.path.abspath(__file__)), "../..")
)
app_toml_filename = os.path.join(toml_root_dir, "pyproject.toml")

toml_loaded = toml.load(app_toml_filename)

version = toml_loaded["project"]["version"]


def get_size(x):
    try:
        if x.endswith("TB"):
            return float(x.replace("TB", "")) * (2**40)
        if x.endswith("GB"):
            return float(x.replace("GB", "")) * (2**30)
        if x.endswith("MB"):
            return float(x.replace("MB", "")) * (2**20)
        if x.endswith("KB"):
            return float(x.replace("KB", "")) * (2**10)
        if x.endswith("B"):
            return float(x.replace("B", ""))
        return 2**31
    except Exception:
        return 2**31


try:
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("8.8.8.8", 80))
    host = s.getsockname()[0]
    s.close()
except OSError:
    host = "localhost"

port = "10101"
url = f"http://{host}:{port}/"


if os.getenv("H2O_LLM_STUDIO_DEFAULT_LM_MODELS"):
    default_causal_language_models = [
        mdl.strip() for mdl in os.getenv("H2O_LLM_STUDIO_DEFAULT_LM_MODELS").split(",")
    ]
else:
    default_causal_language_models = [
        "h2oai/h2o-danube3-500m-base",
        "h2oai/h2o-danube3-500m-chat",
        "h2oai/h2o-danube3-4b-base",
        "h2oai/h2o-danube3-4b-chat",
        "h2oai/h2o-danube2-1.8b-base",
        "h2oai/h2o-danube2-1.8b-chat",
        "meta-llama/Llama-3.2-1B-Instruct",
        "meta-llama/Llama-3.2-3B-Instruct",
        "meta-llama/Meta-Llama-3.1-8B-Instruct",
        "meta-llama/Meta-Llama-3.1-70B-Instruct",
        "mistralai/Mistral-7B-v0.3",
        "mistralai/Mistral-7B-Instruct-v0.2",
        "google/gemma-2-2b-it",
        "google/gemma-2-9b-it",
        "microsoft/Phi-3-mini-4k-instruct",
        "microsoft/Phi-3-medium-4k-instruct",
        "Qwen/Qwen2-7B-Instruct",
        "Qwen/Qwen2-72B-Instruct",
    ]

if os.getenv("H2O_LLM_STUDIO_DEFAULT_S2S_MODELS"):
    default_sequence_to_sequence_models = [
        mdl.strip() for mdl in os.getenv("H2O_LLM_STUDIO_DEFAULT_S2S_MODELS").split(",")
    ]
else:
    default_sequence_to_sequence_models = [
        "t5-small",
        "t5-base",
        "t5-large",
        "google/flan-t5-small",
        "google/flan-t5-base",
        "google/flan-t5-large",
        "google/flan-ul2",
    ]

default_cfg = {
    "url": url,
    "name": "H2O LLM Studio",
    "version": version,
    "github": "https://github.com/h2oai/h2o-llmstudio",
    "min_experiment_disk_space": get_size(
        os.getenv("MIN_DISK_SPACE_FOR_EXPERIMENTS", "2GB")
    ),
    "allowed_file_extensions": os.getenv(
        "ALLOWED_FILE_EXTENSIONS", ".zip,.csv,.pq,.parquet"
    ).split(","),
    "llm_studio_workdir": f"{os.getenv('H2O_LLM_STUDIO_WORKDIR', os.getcwd())}",
    "heap_mode": os.getenv("H2O_LLM_STUDIO_ENABLE_HEAP", "False") == "True",
    "data_folder": "data/",
    "output_folder": "output/",
    "cfg_file": "text_causal_language_modeling_config",
    "start_page": "home",
    "problem_types": [
        "text_causal_language_modeling_config",
        "text_causal_classification_modeling_config",
        "text_causal_regression_modeling_config",
        "text_sequence_to_sequence_modeling_config",
        "text_dpo_modeling_config",
    ],
    "default_causal_language_models": default_causal_language_models,
    "default_sequence_to_sequence_models": default_sequence_to_sequence_models,
    "problem_categories": ["text"],
    "dataset_keys": [
        "train_dataframe",
        "validation_dataframe",
        "system_column",
        "prompt_column",
        "rejected_prompt_column",
        "answer_column",
        "rejected_answer_column",
        "parent_id_column",
        "id_column",
    ],
    "dataset_trigger_keys": [
        "train_dataframe",
        "validation_dataframe",
        "parent_id_column",
    ],
    "dataset_extra_keys": [
        "validation_strategy",
        "data_sample",
        "data_sample_choice",
    ],
    "dataset_folder_keys": [
        "train_dataframe",
        "validation_dataframe",
    ],
    "user_settings": {
        "credential_saver": ".env File",
        "default_aws_bucket_name": f"{os.getenv('AWS_BUCKET', 'bucket_name')}",
        "default_aws_access_key": os.getenv("AWS_ACCESS_KEY_ID", ""),
        "default_aws_secret_key": os.getenv("AWS_SECRET_ACCESS_KEY", ""),
        "default_azure_conn_string": "",
        "default_azure_container": "",
        "default_kaggle_username": "",
        "default_kaggle_secret_key": "",
        "set_max_epochs": 50,
        "set_max_batch_size": 256,
        "set_max_num_classes": 100,
        "set_max_max_length": 16384,
        "set_max_gradient_clip": 10,
        "set_max_lora_r": 256,
        "set_max_lora_alpha": 256,
        "gpu_used_for_download": "cuda:0",
        "gpu_used_for_chat": 1,
        "default_number_of_workers": 8,
        "default_logger": "None",
        "default_neptune_project": os.getenv("NEPTUNE_PROJECT", ""),
        "default_neptune_api_token": os.getenv("NEPTUNE_API_TOKEN", ""),
        "default_wandb_api_token": os.getenv("WANDB_API_KEY", ""),
        "default_wandb_project": os.getenv("WANDB_PROJECT", ""),
        "default_wandb_entity": os.getenv("WANDB_ENTITY", ""),
        "default_huggingface_api_token": os.getenv("HF_TOKEN", ""),
        "default_hf_hub_enable_hf_transfer": _is_true(
            os.getenv("HF_HUB_ENABLE_HF_TRANSFER", "1")
        ),
        "default_openai_azure": os.getenv("OPENAI_API_TYPE", "open_ai") == "azure",
        "default_openai_api_token": os.getenv("OPENAI_API_KEY", ""),
        "default_openai_api_base": os.getenv(
            "OPENAI_API_BASE", "https://example-endpoint.openai.azure.com"
        ),
        "default_openai_api_deployment_id": os.getenv(
            "OPENAI_API_DEPLOYMENT_ID", "deployment-name"
        ),
        "default_openai_api_version": os.getenv("OPENAI_API_VERSION", "2023-05-15"),
        "default_gpt_eval_max": os.getenv("GPT_EVAL_MAX", 100),
        "default_safe_serialization": True,
        "delete_dialogs": True,
        "chart_plot_max_points": 1000,
    },
}

default_cfg = SimpleNamespace(**default_cfg)