https://github.com/tensorflow/agents/bl ... rial.ipynb
более или менее строка в строку. Я запустил это в коде VS в среде conda, установив pip, а затем pip установил соответствующие пакеты в среде. Это произошло дважды в двух проектах. Код работает идеально, пока не достигнет набора данных в буфере реверберации, а затем просто зависает и не может двигаться дальше, не выдавая ошибок и не оставляя никаких признаков того, что может произойти. Точно такая же проблема возникла, когда я запустил собственную версию этого кода в проекте, над которым работаю. На следующем (итераторе) все останавливается.
Мой код можно увидеть ниже:
Код: Выделить всё
##RL - agent learns to perform actions in an environment so as to maximize a reward
##2 main components 1) env 2) agent
## agent + environment continuously interact. at each time_step agent takes an action based on its policy where s is the current observation from the environment and receives a reward rt+1 and the next observation st+1 from the env. Goal to improve policy so as to max sum of rewards
### Distinguish state of environment and the observation which is part of environment state that agent can see
from __future__ import absolute_import, division, print_function
import os
os.environ['TF_USE_LEGACY_KERAS']='1'
# os.environ['TF_ENABLE_ONEDNN_OPTS=0']
# os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
import base64
import imageio
import IPython
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import PIL.Image
import pyvirtualdisplay
import reverb
import tensorflow as tf
from tf_agents.agents.dqn import dqn_agent
from tf_agents.drivers import py_driver
from tf_agents.environments import suite_gym
from tf_agents.environments import tf_py_environment
from tf_agents.eval import metric_utils
from tf_agents.metrics import tf_metrics
from tf_agents.networks import sequential
from tf_agents.policies import py_tf_eager_policy
from tf_agents.policies import random_tf_policy
from tf_agents.replay_buffers import reverb_replay_buffer
from tf_agents.replay_buffers import reverb_utils
from tf_agents.trajectories import trajectory
from tf_agents.specs import tensor_spec
from tf_agents.utils import common
display = pyvirtualdisplay.Display(visible=0,size=(1400,900)).start()
print(tf.test.is_built_with_gpu_support())
###HYPERPARAMETERS
num_iterations = 20000
initial_collect_steps=100
collect_steps_per_iteration=1
replay_buffer_max_length=100000
batch_size=64
learning_rate=1e-3
log_interval=200
num_eval_episodes=10
eval_interval=1000
###ENVIRONMENT
env_name="CartPole-v0"
env = suite_gym.load(env_name)
env.reset()
image =PIL.Image.fromarray(env.render())
# image.show()
time_step=env.reset()
action=np.array(1,dtype=np.int32)
next_time_step=env.step(action)
train_py_env=suite_gym.load(env_name)
eval_py_env =suite_gym.load(env_name)
train_env = tf_py_environment.TFPyEnvironment(train_py_env)
eval_env = tf_py_environment.TFPyEnvironment(eval_py_env)
fc_layer_params = (100, 50)
action_tensor_spec=tensor_spec.from_spec(env.action_spec())
num_actions=action_tensor_spec.maximum - action_tensor_spec.minimum+1
def dense_layer(num_units):
return tf.keras.layers.Dense(
num_units,
activation=tf.keras.activations.relu,
kernel_initializer=tf.keras.initializers.VarianceScaling(
scale=2.0,
mode='fan_in',
distribution='truncated_normal'
)
)
dense_layers=[dense_layer(num_units) for num_units in fc_layer_params]
q_values_layer=tf.keras.layers.Dense(
num_actions,
activation=None,
kernel_initializer=tf.keras.initializers.RandomUniform(
minval=-0.03,
maxval=0.03
),
bias_initializer=tf.keras.initializers.Constant(-0.2)
)
q_net=sequential.Sequential(dense_layers+[q_values_layer])
optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate)
train_step_counter=tf.Variable(0)
agent= dqn_agent.DqnAgent(
train_env.time_step_spec(),
train_env.action_spec(),
q_network=q_net,
optimizer=optimizer,
td_errors_loss_fn=common.element_wise_squared_loss,
train_step_counter=train_step_counter
)
agent.initialize()
eval_policy = agent.policy
collect_policy = agent.collect_policy
random_policy = random_tf_policy.RandomTFPolicy(train_env.time_step_spec(),train_env.action_spec())
example_environment = tf_py_environment.TFPyEnvironment(
suite_gym.load('CartPole-v0')
)
time_step=example_environment.reset()
random_policy.action(time_step)
def compute_avg_return(environment,policy,num_episodes=10):
total_return =0.0
for _ in range(num_episodes):
time_step=environment.reset()
episode_return =0.0
while not time_step.is_last():
action_step=policy.action(time_step)
time_step=environment.step(action_step.action)
episode_return += time_step.reward
total_return+=episode_return
avg_return=total_return/num_episodes
return avg_return.numpy()[0]
compute_avg_return(eval_env,random_policy,num_eval_episodes)
table_name='uniform_table'
replay_buffer_signature = tensor_spec.from_spec(
agent.collect_data_spec
)
replay_buffer_signature = tensor_spec.add_outer_dim(
replay_buffer_signature
)
table=reverb.Table(
table_name,
max_size=replay_buffer_max_length,
sampler=reverb.selectors.Uniform(),
remover=reverb.selectors.Fifo(),
rate_limiter=reverb.rate_limiters.MinSize(1),
signature=replay_buffer_signature
)
reverb_server=reverb.Server([table])
replay_buffer= reverb_replay_buffer.ReverbReplayBuffer(
agent.collect_data_spec,
table_name=table_name,
sequence_length=2,
local_server=reverb_server
)
rb_observer=reverb_utils.ReverbAddTrajectoryObserver(
replay_buffer.py_client,
table_name,
sequence_length=2
)
dataset=replay_buffer.as_dataset(
num_parallel_calls=3,
sample_batch_size=batch_size,
num_steps=2
).prefetch(3)
iterator=iter(dataset)
# try:
# %%time
# except:
# pass
agent.train=common.function(agent.train)
agent.train_step_counter.assign(0)
avg_return = compute_avg_return(eval_env,agent.policy,num_eval_episodes)
returns =[avg_return]
time_step=train_py_env.reset()
collect_driver = py_driver.PyDriver(
env,
py_tf_eager_policy.PyTFEagerPolicy(
agent.collect_policy,use_tf_function=True),
[rb_observer],
max_steps=collect_steps_per_iteration
)
for _ in range(num_iterations):
time_step,_=collect_driver.run(time_step)
print('iterator next')
experience,unused_info=next(iterator)### < / c o d e > < b r / > с п и с о к к о н д < / p > < b r / > < c o d e > # N a m e V e r s i o n B u i l d C h a n n e l < b r / > _ l i b g c c _ m u t e x 0 . 1 c o n d a _ f o r g e c o n d a - f o r g e < b r / > _ o p e n m p _ m u t e x 4 . 5 2 _ g n u c o n d a - f o r g e < b r / > a l s a - l i b 1 . 2 . 1 3 h b 9 d 3 c d 8 _ 0 c o n d a - f o r g e < b r / > a s t t o k e n s 3 . 0 . 0 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > b r o t l i 1 . 1 . 0 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > b r o t l i - b i n 1 . 1 . 0 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > b z i p 2 1 . 0 . 8 h 4 b c 7 2 2 e _ 7 c o n d a - f o r g e < b r / > c a - c e r t i f i c a t e s 2 0 2 4 . 1 2 . 1 4 h b c c a 0 5 4 _ 0 c o n d a - f o r g e < b r / > c a i r o 1 . 1 8 . 2 h 3 3 9 4 6 5 6 _ 1 c o n d a - f o r g e < b r / > c e r t i f i 2 0 2 4 . 8 . 3 0 p y h d 8 e d 1 a b _ 0 c o n d a - f o r g e < b r / > c o n t o u r p y 1 . 3 . 0 p y 3 9 h 7 4 8 4 2 e 3 _ 2 c o n d a - f o r g e < b r / > c y c l e r 0 . 1 2 . 1 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > c y r u s - s a s l 2 . 1 . 2 7 h 5 4 b 0 6 d 7 _ 7 c o n d a - f o r g e < b r / > d b u s 1 . 1 3 . 6 h 5 0 0 8 d 0 3 _ 3 c o n d a - f o r g e < b r / > d e c o r a t o r 5 . 1 . 1 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > d o u b l e - c o n v e r s i o n 3 . 3 . 0 h 5 9 5 9 5 e d _ 0 c o n d a - f o r g e < b r / > e x c e p t i o n g r o u p 1 . 2 . 2 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > e x e c u t i n g 2 . 1 . 0 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > e x p a t 2 . 6 . 4 h 5 8 8 8 d a f _ 0 c o n d a - f o r g e < b r / > f o n t - t t f - d e j a v u - s a n s - m o n o 2 . 3 7 h a b 2 4 e 0 0 _ 0 c o n d a - f o r g e < b r / > f o n t - t t f - i n c o n s o l a t a 3 . 0 0 0 h 7 7 e e d 3 7 _ 0 c o n d a - f o r g e < b r / > f o n t - t t f - s o u r c e - c o d e - p r o 2 . 0 3 8 h 7 7 e e d 3 7 _ 0 c o n d a - f o r g e < b r / > f o n t - t t f - u b u n t u 0 . 8 3 h 7 7 e e d 3 7 _ 3 c o n d a - f o r g e < b r / > f o n t c o n f i g 2 . 1 5 . 0 h 7 e 3 0 c 4 9 _ 1 c o n d a - f o r g e < b r / > f o n t s - c o n d a - e c o s y s t e m 1 0 c o n d a - f o r g e < b r / > f o n t s - c o n d a - f o r g e 1 0 c o n d a - f o r g e < b r / > f o n t t o o l s 4 . 5 5 . 3 p y 3 9 h 9 3 9 9 b 6 3 _ 0 c o n d a - f o r g e < b r / > f r e e t y p e 2 . 1 2 . 1 h 2 6 7 a 5 0 9 _ 2 c o n d a - f o r g e < b r / > g r a p h i t e 2 1 . 3 . 1 3 h 5 9 5 9 5 e d _ 1 0 0 3 c o n d a - f o r g e < b r / > h a r f b u z z 9 . 0 . 0 h d a 3 3 2 d 3 _ 1 c o n d a - f o r g e < b r / > i c u 7 5 . 1 h e 0 2 0 4 7 a _ 0 c o n d a - f o r g e < b r / > i m a g e i o 2 . 4 . 0 p y p i _ 0 p y p i < b r / > i m p o r t l i b - r e s o u r c e s 6 . 4 . 5 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > i m p o r t l i b _ r e s o u r c e s 6 . 4 . 5 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > i p y t h o n 8 . 1 8 . 1 p y h 7 0 7 e 7 2 5 _ 3 c o n d a - f o r g e < b r / > j e d i 0 . 1 9 . 2 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > k e r a s 2 . 1 5 . 0 p y p i _ 0 p y p i < b r / > k e y u t i l s 1 . 6 . 1 h 1 6 6 b d a f _ 0 c o n d a - f o r g e < b r / > k i w i s o l v e r 1 . 4 . 7 p y 3 9 h 7 4 8 4 2 e 3 _ 0 c o n d a - f o r g e < b r / > k r b 5 1 . 2 1 . 3 h 6 5 9 f 5 7 1 _ 0 c o n d a - f o r g e < b r / > l c m s 2 2 . 1 6 h b 7 c 1 9 f f _ 0 c o n d a - f o r g e < b r / > l d _ i m p l _ l i n u x - 6 4 2 . 4 3 h 7 1 2 a 8 e 2 _ 2 c o n d a - f o r g e < b r / > l e r c 4 . 0 . 0 h 2 7 0 8 7 f c _ 0 c o n d a - f o r g e < b r / > l i b b l a s 3 . 9 . 0 2 5 _ l i n u x 6 4 _ o p e n b l a s c o n d a - f o r g e < b r / > l i b b r o t l i c o m m o n 1 . 1 . 0 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > l i b b r o t l i d e c 1 . 1 . 0 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > l i b b r o t l i e n c 1 . 1 . 0 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > l i b c b l a s 3 . 9 . 0 2 5 _ l i n u x 6 4 _ o p e n b l a s c o n d a - f o r g e < b r / > l i b c l a n g - c p p 1 9 . 1 1 9 . 1 . 5 d e f a u l t _ h b 5 1 3 7 d 0 _ 0 c o n d a - f o r g e < b r / > l i b c l a n g 1 3 1 9 . 1 . 5 d e f a u l t _ h 9 c 6 a 7 e 4 _ 0 c o n d a - f o r g e < b r / > l i b c u p s 2 . 3 . 3 h 4 6 3 7 d 8 d _ 4 c o n d a - f o r g e < b r / > l i b d e f l a t e 1 . 2 2 h b 9 d 3 c d 8 _ 0 c o n d a - f o r g e < b r / > l i b d r m 2 . 4 . 1 2 4 h b 9 d 3 c d 8 _ 0 c o n d a - f o r g e < b r / > l i b e d i t 3 . 1 . 2 0 1 9 1 2 3 1 h e 2 8 a 2 e 2 _ 2 c o n d a - f o r g e < b r / > l i b e g l 1 . 7 . 0 h a 4 b 6 f d 6 _ 2 c o n d a - f o r g e < b r / > l i b e x p a t 2 . 6 . 4 h 5 8 8 8 d a f _ 0 c o n d a - f o r g e < b r / > l i b f f i 3 . 4 . 2 h 7 f 9 8 8 5 2 _ 5 c o n d a - f o r g e < b r / > l i b g c c 1 4 . 2 . 0 h 7 7 f a 8 9 8 _ 1 c o n d a - f o r g e < b r / > l i b g c c - n g 1 4 . 2 . 0 h 6 9 a 7 0 2 a _ 1 c o n d a - f o r g e < b r / > l i b g f o r t r a n 1 4 . 2 . 0 h 6 9 a 7 0 2 a _ 1 c o n d a - f o r g e < b r / > l i b g f o r t r a n 5 1 4 . 2 . 0 h d 5 2 4 0 d 6 _ 1 c o n d a - f o r g e < b r / > l i b g l 1 . 7 . 0 h a 4 b 6 f d 6 _ 2 c o n d a - f o r g e < b r / > l i b g l i b 2 . 8 2 . 2 h 2 f f 4 d d f _ 0 c o n d a - f o r g e < b r / > l i b g l v n d 1 . 7 . 0 h a 4 b 6 f d 6 _ 2 c o n d a - f o r g e < b r / > l i b g l x 1 . 7 . 0 h a 4 b 6 f d 6 _ 2 c o n d a - f o r g e < b r / > l i b g o m p 1 4 . 2 . 0 h 7 7 f a 8 9 8 _ 1 c o n d a - f o r g e < b r / > l i b i c o n v 1 . 1 7 h d 5 9 0 3 0 0 _ 2 c o n d a - f o r g e < b r / > l i b j p e g - t u r b o 3 . 0 . 0 h d 5 9 0 3 0 0 _ 1 c o n d a - f o r g e < b r / > l i b l a p a c k 3 . 9 . 0 2 5 _ l i n u x 6 4 _ o p e n b l a s c o n d a - f o r g e < b r / > l i b l l v m 1 9 1 9 . 1 . 5 h a 7 b f d a f _ 0 c o n d a - f o r g e < b r / > l i b l z m a 5 . 6 . 3 h b 9 d 3 c d 8 _ 1 c o n d a - f o r g e < b r / > l i b n s l 2 . 0 . 1 h d 5 9 0 3 0 0 _ 0 c o n d a - f o r g e < b r / > l i b n t l m 1 . 4 h 7 f 9 8 8 5 2 _ 1 0 0 2 c o n d a - f o r g e < b r / > l i b o p e n b l a s 0 . 3 . 2 8 p t h r e a d s _ h 9 4 d 2 3 a 6 _ 1 c o n d a - f o r g e < b r / > l i b o p e n g l 1 . 7 . 0 h a 4 b 6 f d 6 _ 2 c o n d a - f o r g e < b r / > l i b p c i a c c e s s 0 . 1 8 h d 5 9 0 3 0 0 _ 0 c o n d a - f o r g e < b r / > l i b p n g 1 . 6 . 4 4 h a d c 2 4 f c _ 0 c o n d a - f o r g e < b r / > l i b p q 1 7 . 2 h 3 b 9 5 a 9 b _ 1 c o n d a - f o r g e < b r / > l i b s q l i t e 3 . 4 7 . 2 h e e 5 8 8 c 1 _ 0 c o n d a - f o r g e < b r / > l i b s t d c x x 1 4 . 2 . 0 h c 0 a 3 c 3 a _ 1 c o n d a - f o r g e < b r / > l i b s t d c x x - n g 1 4 . 2 . 0 h 4 8 5 2 5 2 7 _ 1 c o n d a - f o r g e < b r / > l i b t i f f 4 . 7 . 0 h c 4 6 5 4 c b _ 2 c o n d a - f o r g e < b r / > l i b u u i d 2 . 3 8 . 1 h 0 b 4 1 b f 4 _ 0 c o n d a - f o r g e < b r / > l i b w e b p - b a s e 1 . 4 . 0 h d 5 9 0 3 0 0 _ 0 c o n d a - f o r g e < b r / > l i b x c b 1 . 1 7 . 0 h 8 a 0 9 5 5 8 _ 0 c o n d a - f o r g e < b r / > l i b x c r y p t 4 . 4 . 3 6 h d 5 9 0 3 0 0 _ 1 c o n d a - f o r g e < b r / > l i b x k b c o m m o n 1 . 7 . 0 h 2 c 5 4 9 6 b _ 1 c o n d a - f o r g e < b r / > l i b x m l 2 2 . 1 3 . 5 h 8 d 1 2 d 6 8 _ 1 c o n d a - f o r g e < b r / > l i b x s l t 1 . 1 . 3 9 h 7 6 b 7 5 d 6 _ 0 c o n d a - f o r g e < b r / > l i b z l i b 1 . 3 . 1 h b 9 d 3 c d 8 _ 2 c o n d a - f o r g e < b r / > m a t p l o t l i b 3 . 9 . 4 p y 3 9 h f 3 d 1 5 2 e _ 0 c o n d a - f o r g e < b r / > m a t p l o t l i b - b a s e 3 . 9 . 4 p y 3 9 h 1 6 6 3 2 d 1 _ 0 c o n d a - f o r g e < b r / > m a t p l o t l i b - i n l i n e 0 . 1 . 7 p y h d 8 e d 1 a b _ 1 c o n d a - f o r g e < b r / > m l - d t y p e s 0 . 3 . 2 p y p i _ 0 p y p i < b r / > m u n k r e s 1 . 1 . 4 p y h 9 f 0 a d 1 d _ 0 c o n d a - f o r g e < b r / > m y s q l - c o m m o n 9 . 0 . 1 h 2 6 6 1 1 5 a _ 3 c o n d a - f o r g e < b r / > m y s q l - l i b s 9 . 0 . 1 h e 0 5 7 2 a f _ 3 c o n d a - f o r g e < b r / > n c u r s e s 6 . 5 h e 0 2 0 4 7 a _ 1 c o n d a - f o r g e < b r / > n u m p y 2 . 0 . 2 p y 3 9 h 9 c b 8 9 2 a _ 1 c o n d a - f o r g e < b r / > o p e n j p e g 2 . 5 . 3 h 5 f b d 9 3 e _ 0 c o n d a - f o r g e < b r / > o p e n l d a p 2 . 6 . 9 h e 9 7 0 9 6 7 _ 0 c o n d a-forge
openssl 3.4.0 hb9d3cd8_0 conda-forge
packaging 24.2 pyhd8ed1ab_2 conda-forge
parso 0.8.4 pyhd8ed1ab_1 conda-forge
pcre2 10.44 hba22ea6_2 conda-forge
pexpect 4.9.0 pyhd8ed1ab_1 conda-forge
pickleshare 0.7.5 pyhd8ed1ab_1004 conda-forge
pillow 11.0.0 py39h538c539_0 conda-forge
pip 24.3.1 pyh8b19718_0 conda-forge
pixman 0.44.2 h29eaf8c_0 conda-forge
prompt-toolkit 3.0.48 pyha770c72_1 conda-forge
pthread-stubs 0.4 hb9d3cd8_1002 conda-forge
ptyprocess 0.7.0 pyhd8ed1ab_1 conda-forge
pure_eval 0.2.3 pyhd8ed1ab_1 conda-forge
pyglet 2.0.20 pypi_0 pypi
pygments 2.18.0 pyhd8ed1ab_1 conda-forge
pyparsing 3.2.0 pyhd8ed1ab_2 conda-forge
pyside6 6.8.1 py39h0383914_0 conda-forge
python 3.9.21 h9c0c6dc_1_cpython conda-forge
python-dateutil 2.9.0.post0 pyhff2d567_1 conda-forge
python_abi 3.9 5_cp39 conda-forge
pyvirtualdisplay 3.0 pypi_0 pypi
qhull 2020.2 h434a139_5 conda-forge
qt6-main 6.8.1 h9d28a51_0 conda-forge
readline 8.2 h8228510_1 conda-forge
setuptools 75.6.0 pyhff2d567_1 conda-forge
six 1.17.0 pyhd8ed1ab_0 conda-forge
stack_data 0.6.3 pyhd8ed1ab_1 conda-forge
tensorboard 2.15.2 pypi_0 pypi
tensorflow 2.15.1 pypi_0 pypi
tf-agents 0.19.0 pypi_0 pypi
tf-keras 2.18.0 pypi_0 pypi
tk 8.6.13 noxft_h4845f30_101 conda-forge
tornado 6.4.2 py39h8cd3c5a_0 conda-forge
traitlets 5.14.3 pyhd8ed1ab_1 conda-forge
typing_extensions 4.12.2 pyha770c72_1 conda-forge
tzdata 2024b hc8b5060_0 conda-forge
unicodedata2 15.1.0 py39h8cd3c5a_1 conda-forge
wayland 1.23.1 h3e06ad9_0 conda-forge
wcwidth 0.2.13 pyhd8ed1ab_1 conda-forge
wheel 0.45.1 pyhd8ed1ab_1 conda-forge
xcb-util 0.4.1 hb711507_2 conda-forge
xcb-util-cursor 0.1.5 hb9d3cd8_0 conda-forge
xcb-util-image 0.4.0 hb711507_2 conda-forge
xcb-util-keysyms 0.4.1 hb711507_0 conda-forge
xcb-util-renderutil 0.3.10 hb711507_0 conda-forge
xcb-util-wm 0.4.2 hb711507_0 conda-forge
xkeyboard-config 2.43 hb9d3cd8_0 conda-forge
xorg-libice 1.1.2 hb9d3cd8_0 conda-forge
xorg-libsm 1.2.5 he73a12e_0 conda-forge
xorg-libx11 1.8.10 h4f16b4b_1 conda-forge
xorg-libxau 1.0.12 hb9d3cd8_0 conda-forge
xorg-libxcomposite 0.4.6 hb9d3cd8_2 conda-forge
xorg-libxcursor 1.2.3 hb9d3cd8_0 conda-forge
xorg-libxdamage 1.1.6 hb9d3cd8_0 conda-forge
xorg-libxdmcp 1.1.5 hb9d3cd8_0 conda-forge
xorg-libxext 1.3.6 hb9d3cd8_0 conda-forge
xorg-libxfixes 6.0.1 hb9d3cd8_0 conda-forge
xorg-libxi 1.8.2 hb9d3cd8_0 conda-forge
xorg-libxrandr 1.5.4 hb9d3cd8_0 conda-forge
xorg-libxrender 0.9.12 hb9d3cd8_0 conda-forge
xorg-libxtst 1.2.5 hb9d3cd8_3 conda-forge
xorg-libxxf86vm 1.1.6 hb9d3cd8_0 conda-forge
zipp 3.21.0 pyhd8ed1ab_1 conda-forge
zstd 1.5.6 ha6fb4c9_0 conda-forge
Подробнее здесь: https://stackoverflow.com/questions/792 ... tor-it-fre
Мобильная версия