Introduce pydantic_v1 compatibility module for pydantic>=2.0.0 support (#4407)

* Introduce pydantic_v1 compatibility module for pydantic>=2.0.0 support
This commit is contained in:
Matthew Hoffman
2023-10-09 10:59:30 -08:00
committed by GitHub
parent e7acee4933
commit 604d701e35
11 changed files with 27 additions and 12 deletions

View File

@ -3,8 +3,8 @@
# DeepSpeed Team
from pydantic import BaseModel
from .constants import *
from ..pydantic_v1 import BaseModel
class CommsConfig(BaseModel):

View File

@ -5,10 +5,9 @@
import torch
import deepspeed
from deepspeed.pydantic_v1 import Field, validator
from deepspeed.runtime.config_utils import DeepSpeedConfigModel
from deepspeed.runtime.zero.config import DeepSpeedZeroConfig
from pydantic import Field
from pydantic import validator
from typing import Dict, Union
from enum import Enum

View File

@ -3,7 +3,7 @@
# DeepSpeed Team
from pydantic import root_validator
from deepspeed.pydantic_v1 import root_validator
from deepspeed.runtime.config_utils import DeepSpeedConfigModel

16
deepspeed/pydantic_v1.py Normal file
View File

@ -0,0 +1,16 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: Apache-2.0
# DeepSpeed Team
"""Pydantic v1 compatibility module.
Pydantic v2 introduced breaking changes that hinder its adoption:
https://docs.pydantic.dev/latest/migration/. To provide deepspeed users the option to
migrate to pydantic v2 on their own timeline, deepspeed uses this compatibility module
as a pydantic-version-agnostic alias for pydantic's v1 API.
"""
try:
from pydantic.v1 import * # noqa: F401
except ImportError:
from pydantic import * # noqa: F401

View File

@ -9,7 +9,7 @@ import json
import collections
import collections.abc
from functools import reduce
from pydantic import BaseModel
from deepspeed.pydantic_v1 import BaseModel
from deepspeed.utils import logger

View File

@ -3,10 +3,10 @@
# DeepSpeed Team
from pydantic import Field, validator
import sys
from typing import Optional
from enum import Enum
from deepspeed.pydantic_v1 import Field, validator
from deepspeed.runtime.config_utils import get_scalar_param, pp_int, DeepSpeedConfigModel
from deepspeed.utils import logger
from .offload_config import DeepSpeedZeroOffloadParamConfig, DeepSpeedZeroOffloadOptimizerConfig, OffloadDeviceEnum

View File

@ -3,9 +3,9 @@
# DeepSpeed Team
from pydantic import Field, validator
from enum import Enum
from pathlib import Path
from deepspeed.pydantic_v1 import Field, validator
from deepspeed.runtime.config_utils import DeepSpeedConfigModel, pp_int

View File

@ -18,4 +18,4 @@ dependencies:
- certifi
- openssl
- python=3.10
- pydantic<2.0.0
- pydantic

View File

@ -1,9 +1,9 @@
autodoc_pydantic<2.0.0
autodoc_pydantic
docutils<0.18
hjson
packaging
psutil
py-cpuinfo
pydantic<2.0.0
pydantic
torch
tqdm

View File

@ -4,6 +4,6 @@ numpy
packaging>=20.0
psutil
py-cpuinfo
pydantic<2.0.0
pydantic
torch
tqdm

View File

@ -6,8 +6,8 @@
import pytest
import os
import json
from pydantic import Field, ValidationError
from typing import List
from deepspeed.pydantic_v1 import Field, ValidationError
from deepspeed.runtime import config as ds_config
from deepspeed.runtime.config_utils import DeepSpeedConfigModel