Xin-Rui's picture
Upload folder using huggingface_hub
7155cf2 verified
# Copyright 2024 Bytedance Ltd. and/or its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Actor config
"""
from dataclasses import dataclass, field
from typing import Any, Dict, Optional, Tuple
@dataclass
class ModelConfig:
model_path: Optional[str] = None
tokenizer_path: Optional[str] = None
override_config: Dict[str, Any] = field(default_factory=dict)
enable_gradient_checkpointing: bool = True
trust_remote_code: bool = True
freeze_vision_tower: bool = False
def post_init(self):
if self.tokenizer_path is None:
self.tokenizer_path = self.model_path
@dataclass
class OptimConfig:
lr: float = 1e-6
betas: Tuple[float, float] = (0.9, 0.999)
weight_decay: float = 1e-2
strategy: str = "adamw"
lr_warmup_ratio: float = 0.0
min_lr_ratio: Optional[float] = None
warmup_style: str = "constant"
"""auto keys"""
training_steps: int = field(default=-1, init=False)
@dataclass
class FSDPConfig:
enable_full_shard: bool = True
enable_cpu_offload: bool = False
enable_rank0_init: bool = False
use_orig_params: bool = False
torch_dtype: Optional[str] = None
fsdp_size: int = -1
mp_param_dtype: str = "bf16"
mp_reduce_dtype: str = "fp32"
mp_buffer_dtype: str = "fp32"
@dataclass
class OffloadConfig:
offload_params: bool = False
offload_optimizer: bool = False
@dataclass
class ActorConfig:
strategy: str = "fsdp"
global_batch_size: int = 256
micro_batch_size_per_device_for_update: int = 4
micro_batch_size_per_device_for_experience: int = 16
max_grad_norm: float = 1.0
clip_ratio_low: float = 0.2
clip_ratio_high: float = 0.3
clip_ratio_dual: float = 3.0
ppo_epochs: int = 1
padding_free: bool = False
ulysses_sequence_parallel_size: int = 1
use_torch_compile: bool = True
model: ModelConfig = field(default_factory=ModelConfig)
optim: OptimConfig = field(default_factory=OptimConfig)
fsdp: FSDPConfig = field(default_factory=FSDPConfig)
offload: OffloadConfig = field(default_factory=OffloadConfig)
"""auto keys"""
global_batch_size_per_device: int = field(default=-1, init=False)
disable_kl: bool = field(default=False, init=False)
use_kl_loss: bool = field(default=False, init=False)
kl_penalty: str = field(default="kl", init=False)
kl_coef: float = field(default=0.0, init=False)
@dataclass
class RefConfig:
strategy: str = "fsdp"
fsdp: FSDPConfig = field(default_factory=FSDPConfig)
offload: OffloadConfig = field(default_factory=OffloadConfig)
"""auto keys"""
micro_batch_size_per_device_for_experience: int = field(default=-1, init=False)
padding_free: bool = field(default=False, init=False)
ulysses_sequence_parallel_size: int = field(default=1, init=False)
use_torch_compile: bool = field(default=True, init=False)