Download GeoText-1652/Method/optim.py from geobase/GeoText1652_model: direct link, hf CLI and curl.
- Browser
- Download file 1.53 kB
-
https://huggingface.co/geobase/GeoText1652_model/resolve/main/GeoText-1652/Method/optim.py
- Command line
-
hf download hf://geobase/GeoText1652_model/GeoText-1652/Method/optim.py
-
curl -L -o optim.py https://huggingface.co/geobase/GeoText1652_model/resolve/main/GeoText-1652/Method/optim.py
1.53 kB
| from transformers.optimization import AdamW | |
| def create_optimizer(args, model): | |
| lr = args.lr | |
| wd = args.weight_decay | |
| lr_mult = getattr(args, 'lr_mult', 1) | |
| print("### lr_mult, ", lr_mult) | |
| optimizer_grouped_parameters = [ | |
| {"params": [], "weight_decay": wd, "lr": lr}, | |
| {"params": [], "weight_decay": 0.0, "lr": lr}, | |
| {"params": [], "weight_decay": wd, "lr": lr * lr_mult}, | |
| {"params": [], "weight_decay": 0.0, "lr": lr * lr_mult} | |
| ] | |
| no_decay = {"bias", | |
| "LayerNorm.bias", | |
| "LayerNorm.weight", | |
| "norm.bias", | |
| "norm.weight", | |
| "norm1.bias", | |
| "norm1.weight", | |
| "norm2.bias", | |
| "norm2.weight"} | |
| if hasattr(model, 'init_params'): | |
| large_lr = model.init_params | |
| print("### model has 'init_params', ", len(large_lr)) | |
| else: | |
| large_lr = {} | |
| for n, p in model.named_parameters(): | |
| if not p.requires_grad: | |
| continue # frozen weights | |
| if any(nd in n for nd in no_decay): | |
| if n in large_lr: | |
| optimizer_grouped_parameters[3]['params'].append(p) | |
| else: | |
| optimizer_grouped_parameters[1]['params'].append(p) | |
| else: # decay | |
| if n in large_lr: | |
| optimizer_grouped_parameters[2]['params'].append(p) | |
| else: | |
| optimizer_grouped_parameters[0]['params'].append(p) | |
| optimizer = AdamW(optimizer_grouped_parameters, lr=lr, eps=1e-8, betas=(0.9, 0.98)) | |
| return optimizer | |