На самом деле очень странная штука этот лимит в 2 Гб. Да, мы на него напарывались, уже очень долго наш основной стек работает на protobuf 21.19 (последняя версия, которая не тянет за собой absl и спокойно устанавливается по git tag из github без submodule update), и там действительно было такое. Но когда я просто ради интереса в свободное время попробовал, не меняя скрипты (в частности Python), просто подгрузить рантайм от 28.3, 31.1 и т. п., то всё, что раньше вылетало с exceed limit в процессе SerializeToOstream магическим образом спокойно сохраняет протобафины и по 6 и по 10 гигабайт, причём как в реализации python+upb (дефолтная в CPython), так и pure python (дефолтная в pypy).
P.S. grpc-bench уверенно даёт 10 ГБит нагрузку сообщения, при этом конкретно для mTLS Python и go практически не отличаются
Да понятно, там в реальности надо вообще cudaMemcpyAsync над ними, но ограничения на оперативку нет, в ноде 24 плашки по 64 Гб. И реализовано уже librdmacm между другим клиентом и подобным сервером с видеокартой, но заказчик сказал давайте модно-молодёжно в gRPC обернём, а то нам вот этот клиент rdma писать лень, да и библиотека эта ваша 10 лет как не обновлялась. Поэтому вариант 1 - просто гоняем вот так repeatedы c командой, вариант 2 - один раз этот пакет 100 Гб принимаем, кладём на ramfs, отдаём его хеш-ид, дальше присылают команду и хеш над которым провести, а отдаём уже что получится. Других вариантов особо не вижу.
service Compute { rpc PerformSingleOp(stream package) returns (stream package); }
Замеры проведём и так и так, посмотрим. Естественно в реальности ещё коды команд, коды возвратов.
Сохранять как раз ничего не нужно, данные не будут (не должны) храниться на этой ноде больше часов 10, надо обработать и вернуть на другую ноду, при этом на вход прилетает все 100 гигабайт, а в зависимости от кода обработки вернуться может от вообще единственной пары value1+value2 во всём repeated до всех 100 гигабайт.
Статью на Хабре не обещаю, но если всё будет успешно, то через пару лет будут выступления на не очень профильных для этого (медицинская физика) конференциях. Можно условно переформулировать задачу, что голые данные с кабеля УЗИ (принципиально, там по 10 ГБит/с может лететь, совсем крутые модели до 70 и FPGA ставят) за несколько секунд после агрегирования через вот такой относительно высокоуровневый стек прогнать.
Готовые пачки на стороне клиента, именно такого объёма, по 10-12 пачек/сутки для отправки на сервер (в далёкой перспективе до 50), а потом их выборочно обновлять и стримить обратно.. вообще думал после приёма их складывать на ramfs. Архитектура пока ни с той ни с другой стороны не прописана, 100 гигов+gRPC+mTLS требование заказчика, librdmacm через infiniband в соседнем проекте реализовано просто, тут на прототипе скорее всего ограничатся 10 GB Ethernet.
А зачем A100? Я с Малевичем спокойно балуюсь, переставив device='cpu' и fp16=False на стареньком i7 второго поколения. Просто разрезолвьте get_rudalle_model('Kandinsky', pretrained=True) или хотя бы checkpoint = torch.load или вы просто никогда не пускали свою модель на процессоре? ;)
Тут вопрос, что вы подразумеваете под пробегом. Mean free path это не то что бы пробег в российской терминологии, это вероятностная мера через сколько в среднем нейтрон столкнётся с чем-нибудь в среде.
Незаряженные частицы (фотоны, нейтроны) - просто ослабляются по интенсивности как e^-kx, по факту пробег их бесконечный, пока не станет <1 частицы от начального флюенса. А вот заряженные - типа протонов, имеют пик Брэгга и соответствующий пробег, который может вычисляться, например, из приближения непрерывного торможения (CSDA). У нейтронов CSDA нет, есть CSDA у тех заряженных частиц (протоны, альфа, углерод, кислород), которые получаются в упругих и неупругих столкновениях нейтронов со средой.
Если быть более точным, то протон состоит из этакого месива пар кварк-антикварк (причём не только верхний-антиверхний, но и, например, странный-антистранный), но таким образом, чтобы определённый момент времени существования протона в нём было два неспаренных верхних кварка (то есть к которым нет антиверхних) и один неспаренный нижний, и при этом суммарный цветовой заряд этих неспаренных uud-кварков был белый.
Вообще там минимально 8 кликов, считая два в dropdown и 1 на ОК, но если поверх этого ещё и переставить HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\DefaultMediaCost\Ethernet в 2, то оно даже покажет сколько Мб апдейтов оно скачает.
ABLA07 (внутри INCLXX) до сих пор на fortran. Переписывать некому. Предыдущую модель каскада (ABLAXX) да, переписали на C++, она и работает в том же Geant4. Последние изменения в коде ABLA07 — от 2015 года. К ней написан C++ интерфейс, чтобы фортрановские функции вызывать из C++, и всё.
Ну вот например цены на мышек, за штуку, покликайте там соседние ссылки. Это только само животное. Расходы на эксперименты на одно животное — можете умножать на 6-10 (смотря что исследуете).
Крыс, знаю, рекомендуется убивать отрубанием головы, если отсутствует аналоги «смертельной инъекции» или она может повлиять на исследуемый вами результат. Иногда, впрочем, и отрубать нечем, тогда за хвост и носом об дерево (:
Если вспомнить, что рак — это общее название почти для 200-300 видов заболеваний, то сказать, что они отличаются нельзя. Некоторые отличаются, некоторые могут накапливать радионуклиды, некоторые могут стараться поглощать из крови другие вещества, нежели характерно для этого органа в нормальном состоянии. Но в целом — нет, ничем они не отличаются, раковые клетки иногда даже без мутаций генетического аппарата могут появляться.
То что вы написали, это, видимо, связано с HIFU или чем-то подобным, но как терапия вроде нормально протестировано только для рака простаты, в остальных случаях это не более, чем паллиатив, чтобы убрать метастазы уже после того или иного терапевтического лечения или хирургического удаления опухоли.
> Раковые клетки несколько проще, чем клетки нашего организма. Они быстрее размножаются, но потребляют только подготовленные питательные вещества. Простые белки и углеводы. Если человек питается только трудноперевариваемыми и требующими значительных усилий для усвоения продуктами — то раковым клеткам будет нечем питаться.
Да нет же, они простые в том плане, что похожи на те клетки, из которых организм берётся — на эмбриональные стволовые клетки — по своему развитию, клеточному циклу, а также по своей устойчивости. И чем питаться они найдут точно так же. А ещё, внезапно, в развитой опухоли (про метастазы не говорим), до 80-90% клеток могут находиться вообще в условиях острой нехватки кислорода. Только вот от этого они не умирают. Да и глюкоза действительно это может стимулировать (современные объяснения эффекта Варбурга). Но в целом, клеткам опухоли примерно всё равно чем питаться, хоть клетками органа, где она возникла и которые умирают по механизмам апоптоза как положено. То что факторы питания целого организма могут реально на это повлиять — весьма сомнительное утверждение.
Могут, я так тремя городами и строил по модулю для Марса. Только ту игру как раз случайно выиграл туризмом)) а писали про него «самый сложный вариант»)
Про дороги это выше отписывали, я прошёл на архипелаге и не сказал бы, что они мне особо нужны были) просто в предыдущих цивах, где рабочие не пропадали, можно было спокойно строить дороги на каждой клетке в свободное время))
Я понял правильно же, в моём случае я просто не имею возможности передать сам факт того, что у меня сообщение длиннее (чем (2^8)^4)?
Спасибо, тогда здесь это не проблема. Вот такой вариант меня для моих данных устроит, он это обходит, если я правильно понимаю.
На самом деле очень странная штука этот лимит в 2 Гб. Да, мы на него напарывались, уже очень долго наш основной стек работает на protobuf 21.19 (последняя версия, которая не тянет за собой absl и спокойно устанавливается по git tag из github без submodule update), и там действительно было такое. Но когда я просто ради интереса в свободное время попробовал, не меняя скрипты (в частности Python), просто подгрузить рантайм от 28.3, 31.1 и т. п., то всё, что раньше вылетало с exceed limit в процессе SerializeToOstream магическим образом спокойно сохраняет протобафины и по 6 и по 10 гигабайт, причём как в реализации python+upb (дефолтная в CPython), так и pure python (дефолтная в pypy).
P.S. grpc-bench уверенно даёт 10 ГБит нагрузку сообщения, при этом конкретно для mTLS Python и go практически не отличаются
Да понятно, там в реальности надо вообще cudaMemcpyAsync над ними, но ограничения на оперативку нет, в ноде 24 плашки по 64 Гб. И реализовано уже librdmacm между другим клиентом и подобным сервером с видеокартой, но заказчик сказал давайте модно-молодёжно в gRPC обернём, а то нам вот этот клиент rdma писать лень, да и библиотека эта ваша 10 лет как не обновлялась. Поэтому вариант 1 - просто гоняем вот так repeatedы c командой, вариант 2 - один раз этот пакет 100 Гб принимаем, кладём на ramfs, отдаём его хеш-ид, дальше присылают команду и хеш над которым провести, а отдаём уже что получится. Других вариантов особо не вижу.
Спасибо за комментарий.
Пока предполагается либо
message package {
repeated double value1 = 1;
repeated double value2 = 2;
}
либо
message single {
double value1 = 1;
double value2 = 2;
}
message package {
repeated single value = 1;
}
и соответственно сервис
service Compute {
rpc PerformSingleOp(stream package) returns (stream package);
}
Замеры проведём и так и так, посмотрим. Естественно в реальности ещё коды команд, коды возвратов.
Сохранять как раз ничего не нужно, данные не будут (не должны) храниться на этой ноде больше часов 10, надо обработать и вернуть на другую ноду, при этом на вход прилетает все 100 гигабайт, а в зависимости от кода обработки вернуться может от вообще единственной пары value1+value2 во всём repeated до всех 100 гигабайт.
Огромное спасибо!
Статью на Хабре не обещаю, но если всё будет успешно, то через пару лет будут выступления на не очень профильных для этого (медицинская физика) конференциях. Можно условно переформулировать задачу, что голые данные с кабеля УЗИ (принципиально, там по 10 ГБит/с может лететь, совсем крутые модели до 70 и FPGA ставят) за несколько секунд после агрегирования через вот такой относительно высокоуровневый стек прогнать.
Готовые пачки на стороне клиента, именно такого объёма, по 10-12 пачек/сутки для отправки на сервер (в далёкой перспективе до 50), а потом их выборочно обновлять и стримить обратно.. вообще думал после приёма их складывать на ramfs. Архитектура пока ни с той ни с другой стороны не прописана, 100 гигов+gRPC+mTLS требование заказчика, librdmacm через infiniband в соседнем проекте реализовано просто, тут на прототипе скорее всего ограничатся 10 GB Ethernet.
Всем привет, хочу гонять по 100 гигов repeated-полей через gRPC с mTLS по Infiniband. Плюсы-минусы-подводные камни?
А зачем A100? Я с Малевичем спокойно балуюсь, переставив device='cpu' и fp16=False на стареньком i7 второго поколения. Просто разрезолвьте
get_rudalle_model('Kandinsky', pretrained=True
) или хотя быcheckpoint = torch.load
или вы просто никогда не пускали свою модель на процессоре? ;)Тут вопрос, что вы подразумеваете под пробегом. Mean free path это не то что бы пробег в российской терминологии, это вероятностная мера через сколько в среднем нейтрон столкнётся с чем-нибудь в среде.
Незаряженные частицы (фотоны, нейтроны) - просто ослабляются по интенсивности как e^-kx, по факту пробег их бесконечный, пока не станет <1 частицы от начального флюенса. А вот заряженные - типа протонов, имеют пик Брэгга и соответствующий пробег, который может вычисляться, например, из приближения непрерывного торможения (CSDA). У нейтронов CSDA нет, есть CSDA у тех заряженных частиц (протоны, альфа, углерод, кислород), которые получаются в упругих и неупругих столкновениях нейтронов со средой.
Крыс, знаю, рекомендуется убивать отрубанием головы, если отсутствует аналоги «смертельной инъекции» или она может повлиять на исследуемый вами результат. Иногда, впрочем, и отрубать нечем, тогда за хвост и носом об дерево (:
То что вы написали, это, видимо, связано с HIFU или чем-то подобным, но как терапия вроде нормально протестировано только для рака простаты, в остальных случаях это не более, чем паллиатив, чтобы убрать метастазы уже после того или иного терапевтического лечения или хирургического удаления опухоли.
Да нет же, они простые в том плане, что похожи на те клетки, из которых организм берётся — на эмбриональные стволовые клетки — по своему развитию, клеточному циклу, а также по своей устойчивости. И чем питаться они найдут точно так же. А ещё, внезапно, в развитой опухоли (про метастазы не говорим), до 80-90% клеток могут находиться вообще в условиях острой нехватки кислорода. Только вот от этого они не умирают. Да и глюкоза действительно это может стимулировать (современные объяснения эффекта Варбурга). Но в целом, клеткам опухоли примерно всё равно чем питаться, хоть клетками органа, где она возникла и которые умирают по механизмам апоптоза как положено. То что факторы питания целого организма могут реально на это повлиять — весьма сомнительное утверждение.
Про дороги это выше отписывали, я прошёл на архипелаге и не сказал бы, что они мне особо нужны были) просто в предыдущих цивах, где рабочие не пропадали, можно было спокойно строить дороги на каждой клетке в свободное время))