Skip to content

Commit 251a3d7

Browse files
committed
removed torch ranking and n_threads
1 parent a64f6dd commit 251a3d7

File tree

9 files changed

+99
-220
lines changed

9 files changed

+99
-220
lines changed

examples/9_model_configs_and_saving.ipynb

Lines changed: 81 additions & 69 deletions
Large diffs are not rendered by default.

examples/tutorials/transformers_advanced_training_guide.ipynb

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,18 +1876,9 @@
18761876
},
18771877
{
18781878
"cell_type": "code",
1879-
"execution_count": 18,
1879+
"execution_count": 2,
18801880
"metadata": {},
18811881
"outputs": [
1882-
{
1883-
"name": "stderr",
1884-
"output_type": "stream",
1885-
"text": [
1886-
"GPU available: True (cuda), used: True\n",
1887-
"TPU available: False, using: 0 TPU cores\n",
1888-
"HPU available: False, using: 0 HPUs\n"
1889-
]
1890-
},
18911882
{
18921883
"data": {
18931884
"text/plain": [
@@ -1912,8 +1903,6 @@
19121903
" 'deterministic': False,\n",
19131904
" 'recommend_batch_size': 256,\n",
19141905
" 'recommend_device': None,\n",
1915-
" 'recommend_n_threads': 0,\n",
1916-
" 'recommend_use_torch_ranking': True,\n",
19171906
" 'train_min_user_interactions': 2,\n",
19181907
" 'item_net_block_types': ['rectools.models.nn.item_net.IdEmbeddingsItemNet',\n",
19191908
" 'rectools.models.nn.item_net.CatFeaturesItemNet'],\n",
@@ -1930,7 +1919,7 @@
19301919
" 'lightning_module_kwargs': None}"
19311920
]
19321921
},
1933-
"execution_count": 18,
1922+
"execution_count": 2,
19341923
"metadata": {},
19351924
"output_type": "execute_result"
19361925
}
@@ -1962,18 +1951,9 @@
19621951
},
19631952
{
19641953
"cell_type": "code",
1965-
"execution_count": 19,
1954+
"execution_count": 3,
19661955
"metadata": {},
19671956
"outputs": [
1968-
{
1969-
"name": "stderr",
1970-
"output_type": "stream",
1971-
"text": [
1972-
"GPU available: True (cuda), used: True\n",
1973-
"TPU available: False, using: 0 TPU cores\n",
1974-
"HPU available: False, using: 0 HPUs\n"
1975-
]
1976-
},
19771957
{
19781958
"data": {
19791959
"text/plain": [
@@ -1998,8 +1978,6 @@
19981978
" 'deterministic': False,\n",
19991979
" 'recommend_batch_size': 256,\n",
20001980
" 'recommend_device': None,\n",
2001-
" 'recommend_n_threads': 0,\n",
2002-
" 'recommend_use_torch_ranking': True,\n",
20031981
" 'train_min_user_interactions': 2,\n",
20041982
" 'item_net_block_types': ['rectools.models.nn.item_net.IdEmbeddingsItemNet',\n",
20051983
" 'rectools.models.nn.item_net.CatFeaturesItemNet'],\n",
@@ -2016,7 +1994,7 @@
20161994
" 'lightning_module_kwargs': None}"
20171995
]
20181996
},
2019-
"execution_count": 19,
1997+
"execution_count": 3,
20201998
"metadata": {},
20211999
"output_type": "execute_result"
20222000
}

examples/tutorials/transformers_customization_guide.ipynb

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,7 @@
10681068
},
10691069
{
10701070
"cell_type": "code",
1071-
"execution_count": 19,
1071+
"execution_count": 62,
10721072
"metadata": {},
10731073
"outputs": [
10741074
{
@@ -1095,8 +1095,6 @@
10951095
" 'deterministic': False,\n",
10961096
" 'recommend_batch_size': 256,\n",
10971097
" 'recommend_device': None,\n",
1098-
" 'recommend_n_threads': 0,\n",
1099-
" 'recommend_use_torch_ranking': True,\n",
11001098
" 'train_min_user_interactions': 2,\n",
11011099
" 'item_net_block_types': ['rectools.models.nn.item_net.IdEmbeddingsItemNet',\n",
11021100
" 'rectools.models.nn.item_net.CatFeaturesItemNet'],\n",
@@ -1115,7 +1113,7 @@
11151113
" 'mask_prob': 0.15}"
11161114
]
11171115
},
1118-
"execution_count": 19,
1116+
"execution_count": 62,
11191117
"metadata": {},
11201118
"output_type": "execute_result"
11211119
}

rectools/models/nn/transformers/base.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,6 @@ class TransformerModelConfig(ModelConfig):
177177
deterministic: bool = False
178178
recommend_batch_size: int = 256
179179
recommend_torch_device: tp.Optional[str] = None
180-
recommend_n_threads: int = 0
181-
recommend_use_torch_ranking: bool = True
182180
train_min_user_interactions: int = 2
183181
item_net_block_types: ItemNetBlockTypes = (IdEmbeddingsItemNet, CatFeaturesItemNet)
184182
item_net_constructor_type: ItemNetConstructorType = SumOfEmbeddingsConstructor
@@ -234,8 +232,6 @@ def __init__( # pylint: disable=too-many-arguments, too-many-locals
234232
deterministic: bool = False,
235233
recommend_batch_size: int = 256,
236234
recommend_torch_device: tp.Optional[str] = None,
237-
recommend_n_threads: int = 0,
238-
recommend_use_torch_ranking: bool = True,
239235
train_min_user_interactions: int = 2,
240236
item_net_block_types: tp.Sequence[tp.Type[ItemNetBase]] = (IdEmbeddingsItemNet, CatFeaturesItemNet),
241237
item_net_constructor_type: tp.Type[ItemNetConstructorBase] = SumOfEmbeddingsConstructor,
@@ -271,8 +267,6 @@ def __init__( # pylint: disable=too-many-arguments, too-many-locals
271267
self.deterministic = deterministic
272268
self.recommend_batch_size = recommend_batch_size
273269
self.recommend_torch_device = recommend_torch_device
274-
self.recommend_n_threads = recommend_n_threads
275-
self.recommend_use_torch_ranking = recommend_use_torch_ranking
276270
self.train_min_user_interactions = train_min_user_interactions
277271
self.item_net_block_types = item_net_block_types
278272
self.item_net_constructor_type = item_net_constructor_type
@@ -452,8 +446,6 @@ def _recommend_u2i(
452446
k=k,
453447
filter_viewed=filter_viewed,
454448
dataset=dataset,
455-
n_threads=self.recommend_n_threads,
456-
use_torch_ranking=self.recommend_use_torch_ranking,
457449
torch_device=self.recommend_torch_device,
458450
)
459451

@@ -471,8 +463,6 @@ def _recommend_i2i(
471463
target_ids=target_ids,
472464
sorted_item_ids_to_recommend=sorted_item_ids_to_recommend,
473465
k=k,
474-
n_threads=self.recommend_n_threads,
475-
use_torch_ranking=self.recommend_use_torch_ranking,
476466
torch_device=self.recommend_torch_device,
477467
)
478468

rectools/models/nn/transformers/bert4rec.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -270,25 +270,10 @@ class BERT4RecModel(TransformerModelBase[BERT4RecModelConfig]):
270270
If you want to change this parameter after model is initialized,
271271
you can manually assign new value to model `recommend_batch_size` attribute.
272272
recommend_torch_device : {"cpu", "cuda", "cuda:0", ...}, default ``None``
273-
String representation for `torch.device` used for torch model inference.
274-
When `recommend_use_torch_ranking` is set to ``True`` (default) this device is also used
275-
for items ranking while preparing recommendations using `TorchRanker`.
273+
String representation for `torch.device` used for model inference.
276274
When set to ``None``, "cuda" will be used if it is available, "cpu" otherwise.
277275
If you want to change this parameter after model is initialized,
278276
you can manually assign new value to model `recommend_torch_device` attribute.
279-
recommend_use_torch_ranking : bool, default ``True``
280-
Use `TorchRanker` for items ranking while preparing recommendations.
281-
When set to ``True`` (default), device specified in `recommend_torch_device` is used
282-
for items ranking.
283-
When set to ``False``, multi-threaded cpu ranking will be used with `ImplicitRanker`. You
284-
can specify number of threads using `recommend_n_threads` argument.
285-
If you want to change this parameter after model is initialized,
286-
you can manually assign new value to model `recommend_use_torch_ranking` attribute.
287-
recommend_n_threads : int, default 0
288-
Number of threads to use for cpu items ranking with `ImplicitRanker`. Omitted if
289-
`recommend_use_torch_ranking` is set to ``True`` (default).
290-
If you want to change this parameter after model is initialized,
291-
you can manually assign new value to model `recommend_n_threads` attribute.
292277
data_preparator_kwargs: optional(dict), default ``None``
293278
Additional keyword arguments to pass during `data_preparator_type` initialization.
294279
Make sure all dict values have JSON serializable types.

rectools/models/nn/transformers/lightning.py

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from rectools import ExternalIds
2424
from rectools.dataset.dataset import Dataset, DatasetSchemaDict
2525
from rectools.models.base import InternalRecoTriplet
26-
from rectools.models.rank import Distance, ImplicitRanker, Ranker, TorchRanker
26+
from rectools.models.rank import Distance, TorchRanker
2727
from rectools.types import InternalIdsArray
2828

2929
from .data_preparator import TransformerDataPreparatorBase
@@ -113,8 +113,6 @@ def _recommend_u2i(
113113
k: int,
114114
dataset: Dataset, # [n_rec_users x n_items + n_item_extra_tokens]
115115
filter_viewed: bool,
116-
use_torch_ranking: bool,
117-
n_threads: int,
118116
torch_device: tp.Optional[str],
119117
*args: tp.Any,
120118
**kwargs: tp.Any,
@@ -127,8 +125,6 @@ def _recommend_i2i(
127125
target_ids: InternalIdsArray,
128126
sorted_item_ids_to_recommend: InternalIdsArray,
129127
k: int,
130-
use_torch_ranking: bool,
131-
n_threads: int,
132128
torch_device: tp.Optional[str],
133129
*args: tp.Any,
134130
**kwargs: tp.Any,
@@ -331,8 +327,6 @@ def _recommend_u2i(
331327
k: int,
332328
dataset: Dataset, # [n_rec_users x n_items + n_item_extra_tokens]
333329
filter_viewed: bool,
334-
use_torch_ranking: bool,
335-
n_threads: int,
336330
torch_device: tp.Optional[str],
337331
) -> InternalRecoTriplet:
338332
"""Recommend to users."""
@@ -342,26 +336,12 @@ def _recommend_u2i(
342336

343337
user_embs, item_embs = self._get_user_item_embeddings(recommend_dataloader, torch_device)
344338

345-
ranker: Ranker
346-
if use_torch_ranking:
347-
ranker = TorchRanker(
348-
distance=Distance.DOT,
349-
device=item_embs.device,
350-
subjects_factors=user_embs[user_ids],
351-
objects_factors=item_embs,
352-
)
353-
else:
354-
user_embs_np = user_embs.detach().cpu().numpy()
355-
item_embs_np = item_embs.detach().cpu().numpy()
356-
del user_embs, item_embs
357-
torch.cuda.empty_cache()
358-
ranker = ImplicitRanker(
359-
Distance.DOT,
360-
user_embs_np[user_ids], # [n_rec_users, n_factors]
361-
item_embs_np, # [n_items + n_item_extra_tokens, n_factors]
362-
num_threads=n_threads,
363-
use_gpu=False,
364-
)
339+
ranker = TorchRanker(
340+
distance=Distance.DOT,
341+
device=item_embs.device,
342+
subjects_factors=user_embs[user_ids],
343+
objects_factors=item_embs,
344+
)
365345

366346
user_ids_indices, all_reco_ids, all_scores = ranker.rank(
367347
subject_ids=np.arange(len(user_ids)), # n_rec_users
@@ -377,31 +357,16 @@ def _recommend_i2i(
377357
target_ids: InternalIdsArray,
378358
sorted_item_ids_to_recommend: InternalIdsArray,
379359
k: int,
380-
use_torch_ranking: bool,
381-
n_threads: int,
382360
torch_device: tp.Optional[str],
383361
) -> InternalRecoTriplet:
384362
"""Recommend to items."""
385363
self._prepare_for_inference(torch_device)
386364
with torch.no_grad():
387365
item_embs = self.torch_model.item_model.get_all_embeddings()
388366

389-
ranker: Ranker
390-
if use_torch_ranking:
391-
ranker = TorchRanker(
392-
distance=self.i2i_dist, device=item_embs.device, subjects_factors=item_embs, objects_factors=item_embs
393-
)
394-
else:
395-
item_embs_np = item_embs.detach().cpu().numpy()
396-
del item_embs
397-
ranker = ImplicitRanker(
398-
self.i2i_dist,
399-
item_embs_np, # [n_items + n_item_extra_tokens, n_factors]
400-
item_embs_np, # [n_items + n_item_extra_tokens, n_factors]
401-
num_threads=n_threads,
402-
use_gpu=False,
403-
)
404-
367+
ranker = TorchRanker(
368+
distance=self.i2i_dist, device=item_embs.device, subjects_factors=item_embs, objects_factors=item_embs
369+
)
405370
torch.cuda.empty_cache()
406371
return ranker.rank(
407372
subject_ids=target_ids, # model internal

rectools/models/nn/transformers/sasrec.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -350,25 +350,10 @@ class SASRecModel(TransformerModelBase[SASRecModelConfig]):
350350
If you want to change this parameter after model is initialized,
351351
you can manually assign new value to model `recommend_batch_size` attribute.
352352
recommend_torch_device : {"cpu", "cuda", "cuda:0", ...}, default ``None``
353-
String representation for `torch.device` used for torch model inference.
354-
When `recommend_use_torch_ranking` is set to ``True`` (default) this device is also used
355-
for items ranking while preparing recommendations using `TorchRanker`.
353+
String representation for `torch.device` used for model inference.
356354
When set to ``None``, "cuda" will be used if it is available, "cpu" otherwise.
357355
If you want to change this parameter after model is initialized,
358356
you can manually assign new value to model `recommend_torch_device` attribute.
359-
recommend_use_torch_ranking : bool, default ``True``
360-
Use `TorchRanker` for items ranking while preparing recommendations.
361-
When set to ``True`` (default), device specified in `recommend_torch_device` is used
362-
for items ranking.
363-
When set to ``False``, multi-threaded cpu ranking will be used with `ImplicitRanker`. You
364-
can specify number of threads using `recommend_n_threads` argument.
365-
If you want to change this parameter after model is initialized,
366-
you can manually assign new value to model `recommend_use_torch_ranking` attribute.
367-
recommend_n_threads : int, default 0
368-
Number of threads to use for cpu items ranking with `ImplicitRanker`. Omitted if
369-
`recommend_use_torch_ranking` is set to ``True`` (default).
370-
If you want to change this parameter after model is initialized,
371-
you can manually assign new value to model `recommend_n_threads` attribute.
372357
data_preparator_kwargs: optional(dict), default ``None``
373358
Additional keyword arguments to pass during `data_preparator_type` initialization.
374359
Make sure all dict values have JSON serializable types.

0 commit comments

Comments
 (0)