deniskondratev commited on
Commit
412bef0
Β·
verified Β·
1 Parent(s): 1b27db1

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +96 -10
  2. requirements.txt +3 -3
app.py CHANGED
@@ -72,23 +72,24 @@ def load_franklin_model():
72
  suggested_base = adapter_config["base_model_name_or_path"]
73
  logger.info(f"πŸ”§ Adapter suggests base model: {suggested_base}")
74
  base_model_options = [suggested_base] + [
75
- "Qwen/Qwen3-8B-Base", # The actual base model used for fine-tuning
76
- "Qwen/Qwen3-8B",
77
  "QWEN/QWEN3-8B",
78
  "Qwen/Qwen2.5-7B"
79
  ]
80
  else:
81
  base_model_options = [
 
82
  "Qwen/Qwen3-8B",
83
- "Qwen/Qwen3-8B-Instruct",
84
- "Qwen/Qwen2.5-7B",
85
- "Qwen/Qwen2.5-7B-Instruct"
86
  ]
87
- except:
 
88
  # If we can't read adapter config, use default options
89
  base_model_options = [
90
- "Qwen/Qwen3-8B-Base", # The actual base model used for fine-tuning
91
- "Qwen/Qwen3-8B",
92
  "QWEN/QWEN3-8B",
93
  "Qwen/Qwen2.5-7B"
94
  ]
@@ -136,8 +137,93 @@ def load_franklin_model():
136
  # Load the PEFT adapter on top of base model
137
  from peft import PeftModel
138
  logger.info(f"πŸ“₯ Loading PEFT adapter from {model_name}...")
139
- model = PeftModel.from_pretrained(base_model, model_name)
140
- logger.info("βœ… Franklin PEFT model loaded successfully!")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  else:
142
  # If using base model, load normally
143
  logger.info("πŸ“₯ Loading tokenizer...")
 
72
  suggested_base = adapter_config["base_model_name_or_path"]
73
  logger.info(f"πŸ”§ Adapter suggests base model: {suggested_base}")
74
  base_model_options = [suggested_base] + [
75
+ "Qwen/Qwen3-8B-Base",
76
+ "Qwen/Qwen3-8B",
77
  "QWEN/QWEN3-8B",
78
  "Qwen/Qwen2.5-7B"
79
  ]
80
  else:
81
  base_model_options = [
82
+ "Qwen/Qwen3-8B-Base",
83
  "Qwen/Qwen3-8B",
84
+ "QWEN/QWEN3-8B",
85
+ "Qwen/Qwen2.5-7B"
 
86
  ]
87
+ except Exception as config_error:
88
+ logger.warning(f"⚠️ Could not read adapter config: {config_error}")
89
  # If we can't read adapter config, use default options
90
  base_model_options = [
91
+ "Qwen/Qwen3-8B-Base",
92
+ "Qwen/Qwen3-8B",
93
  "QWEN/QWEN3-8B",
94
  "Qwen/Qwen2.5-7B"
95
  ]
 
137
  # Load the PEFT adapter on top of base model
138
  from peft import PeftModel
139
  logger.info(f"πŸ“₯ Loading PEFT adapter from {model_name}...")
140
+
141
+ # Try to load the adapter, but handle potential config issues
142
+ try:
143
+ model = PeftModel.from_pretrained(base_model, model_name)
144
+ logger.info("βœ… Franklin PEFT model loaded successfully!")
145
+ except TypeError as e:
146
+ if "corda_config" in str(e):
147
+ logger.warning(f"⚠️ Adapter contains corda_config which is not supported in current PEFT version. Attempting to load with workaround...")
148
+ try:
149
+ # Try to load with a modified config
150
+ from peft import LoraConfig
151
+ import json
152
+ from huggingface_hub import hf_hub_download
153
+
154
+ # Download and modify the adapter config
155
+ adapter_config_path = hf_hub_download(repo_id=model_name, filename="adapter_config.json")
156
+
157
+ # Load the config file
158
+ with open(adapter_config_path, "r") as f:
159
+ adapter_config_data = json.load(f)
160
+
161
+ # Remove unsupported parameters
162
+ original_corda = None
163
+ if "corda_config" in adapter_config_data:
164
+ original_corda = adapter_config_data["corda_config"]
165
+ del adapter_config_data["corda_config"]
166
+ logger.info("πŸ”§ Removed corda_config from adapter config for compatibility")
167
+
168
+ # Create config without unsupported parameters
169
+ modified_config = LoraConfig(**adapter_config_data)
170
+
171
+ # Load the model with the modified config
172
+ from peft import get_peft_model
173
+ model = get_peft_model(base_model, modified_config)
174
+ model.load_adapter(model_name, "default")
175
+ logger.info("βœ… Franklin PEFT model loaded successfully with config workaround!")
176
+ except Exception as workaround_error:
177
+ logger.error(f"❌ Config workaround failed: {workaround_error}")
178
+ logger.info("πŸ”„ Falling back to direct model loading...")
179
+ # If workaround fails, try loading the model directly
180
+ try:
181
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
182
+ model = AutoModelForCausalLM.from_pretrained(
183
+ model_name,
184
+ torch_dtype=torch.float16,
185
+ device_map="auto",
186
+ trust_remote_code=True,
187
+ low_cpu_mem_usage=True
188
+ )
189
+ logger.info("βœ… Successfully loaded fine-tuned model directly as fallback!")
190
+ except Exception as direct_error:
191
+ logger.error(f"❌ Direct loading also failed: {direct_error}")
192
+ return False
193
+ else:
194
+ logger.error(f"❌ Unexpected TypeError when loading adapter: {e}")
195
+ # Try direct loading as fallback
196
+ logger.info("πŸ”„ Falling back to direct model loading...")
197
+ try:
198
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
199
+ model = AutoModelForCausalLM.from_pretrained(
200
+ model_name,
201
+ torch_dtype=torch.float16,
202
+ device_map="auto",
203
+ trust_remote_code=True,
204
+ low_cpu_mem_usage=True
205
+ )
206
+ logger.info("βœ… Successfully loaded fine-tuned model directly as fallback!")
207
+ except Exception as direct_error:
208
+ logger.error(f"❌ Direct loading also failed: {direct_error}")
209
+ return False
210
+ except Exception as e:
211
+ logger.error(f"❌ Failed to load PEFT adapter: {e}")
212
+ # As a fallback, try loading the fine-tuned model directly
213
+ logger.info("πŸ”„ Falling back to direct model loading...")
214
+ try:
215
+ tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
216
+ model = AutoModelForCausalLM.from_pretrained(
217
+ model_name,
218
+ torch_dtype=torch.float16,
219
+ device_map="auto",
220
+ trust_remote_code=True,
221
+ low_cpu_mem_usage=True
222
+ )
223
+ logger.info("βœ… Successfully loaded fine-tuned model directly as fallback!")
224
+ except Exception as direct_error:
225
+ logger.error(f"❌ Direct loading also failed: {direct_error}")
226
+ return False
227
  else:
228
  # If using base model, load normally
229
  logger.info("πŸ“₯ Loading tokenizer...")
requirements.txt CHANGED
@@ -1,9 +1,9 @@
1
  gradio==4.44.0
2
- transformers==4.41.0
3
  torch==2.3.0
4
  accelerate==0.26.0
5
- huggingface-hub>=0.19.3
6
  sentencepiece==0.1.99
7
  protobuf==4.25.0
8
- peft==0.10.0
9
  bitsandbytes==0.43.1
 
1
  gradio==4.44.0
2
+ transformers==4.45.2
3
  torch==2.3.0
4
  accelerate==0.26.0
5
+ huggingface-hub==0.20.3
6
  sentencepiece==0.1.99
7
  protobuf==4.25.0
8
+ peft==0.12.0
9
  bitsandbytes==0.43.1