Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 15 additions & 29 deletions paddlenlp/peft/lora/lora_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,36 +50,22 @@


def get_lora_layers():
try:
if get_env_device() == "xpu":
# If paddle_xpu is not installed, just use PaddleNLP's native lora layers
from paddle_xpu.layers.nn.lora_layers import (
XPUColumnParallelLoRALinear as ColumnParallelLoRALinear,
)
from paddle_xpu.layers.nn.lora_layers import (
XPUColumnSequenceParallelLoRALinear as ColumnSequenceParallelLoRALinear,
)
from paddle_xpu.layers.nn.lora_layers import XPULoRALinear as LoRALinear
from paddle_xpu.layers.nn.lora_layers import (
XPURowParallelLoRALinear as RowParallelLoRALinear,
)
from paddle_xpu.layers.nn.lora_layers import (
XPURowSequenceParallelLoRALinear as RowSequenceParallelLoRALinear,
)

from .lora_layers import LoRAConv2D
if get_env_device() == "xpu":
try:
import paddle_xpu
paddle_xpu.init_lora_layers()
except Exception as e:
logger.warning("Failed to import LoRALinear from paddle_xpu, using PaddleNLP's native implementation.")

Check warning on line 58 in paddlenlp/peft/lora/lora_model.py

View check run for this annotation

Codecov / codecov/patch

paddlenlp/peft/lora/lora_model.py#L54-L58

Added lines #L54 - L58 were not covered by tests
else:
raise ImportError # Force to use the fallback if not XPU
except ImportError:
from .lora_layers import (
ColumnParallelLoRALinear,
ColumnSequenceParallelLoRALinear,
LoRAConv2D,
LoRALinear,
RowParallelLoRALinear,
RowSequenceParallelLoRALinear,
)

logger.info("Import paddle_xpu succeeded.")

Check warning on line 60 in paddlenlp/peft/lora/lora_model.py

View check run for this annotation

Codecov / codecov/patch

paddlenlp/peft/lora/lora_model.py#L60

Added line #L60 was not covered by tests
from .lora_layers import (
ColumnParallelLoRALinear,
ColumnSequenceParallelLoRALinear,
LoRAConv2D,
LoRALinear,
RowParallelLoRALinear,
RowSequenceParallelLoRALinear,
)
return {
"ColumnParallelLoRALinear": ColumnParallelLoRALinear,
"ColumnSequenceParallelLoRALinear": ColumnSequenceParallelLoRALinear,
Expand Down
28 changes: 11 additions & 17 deletions paddlenlp/transformers/linear_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@
MC2RowSeqParallelLinear,
)
from paddlenlp.utils.tools import get_env_device
from paddlenlp.utils.log import logger

if get_env_device() == "xpu":
try:
import paddle_xpu
except Exception as e:
logger.warning("Failed to import paddle_xpu, using PaddlePaddle's native implementations.")

Check warning on line 38 in paddlenlp/transformers/linear_utils.py

View check run for this annotation

Codecov / codecov/patch

paddlenlp/transformers/linear_utils.py#L35-L38

Added lines #L35 - L38 were not covered by tests
else:
logger.info("Import paddle_xpu succeeded.")

Check warning on line 40 in paddlenlp/transformers/linear_utils.py

View check run for this annotation

Codecov / codecov/patch

paddlenlp/transformers/linear_utils.py#L40

Added line #L40 was not covered by tests

Linear = nn.Linear
ColumnParallelLinear = mpu.ColumnParallelLinear
Expand Down Expand Up @@ -62,23 +71,8 @@
ColumnSequenceParallelLinear = MC2ColumnSeqParallelLinear
RowSequenceParallelLinear = MC2RowSeqParallelLinear
elif get_env_device() == "xpu":
try:
from paddle_xpu.layers.nn import ColumnParallelLinear as XPUColumnParallelLinear
from paddle_xpu.layers.nn import Linear as XPULinear
from paddle_xpu.layers.nn import RowParallelLinear as XPURowParallelLinear
from paddle_xpu.layers.nn.sequence_parallel import (
XPUColumnSequenceParallelLinear,
XPURowSequenceParallelLinear,
)

Linear = XPULinear
ColumnParallelLinear = XPUColumnParallelLinear
RowParallelLinear = XPURowParallelLinear
ColumnSequenceParallelLinear = XPUColumnSequenceParallelLinear
RowSequenceParallelLinear = XPURowSequenceParallelLinear
except ImportError:
# If paddle_xpu is not installed, just use Paddle's native Linear implementations
pass
import importlib
importlib.reload(nn)

Check warning on line 75 in paddlenlp/transformers/linear_utils.py

View check run for this annotation

Codecov / codecov/patch

paddlenlp/transformers/linear_utils.py#L74-L75

Added lines #L74 - L75 were not covered by tests
else:
# By default, use Paddle's native Linear implementations
pass